Claude Code安装原理:CLI二进制本质与跨平台部署指南
1. 这不是“装个软件”:Claude Code 的本质与安装逻辑重构
很多人看到“Claude Code 安装方法”这个标题,第一反应是点开一个下载链接、双击安装包、一路下一步——完事。但如果你真这么干,十有八九会在三分钟内卡在npm : 无法加载文件 c:\program files\nodejs\npm.ps1, 因为在此系统上禁止运行脚本这行红色报错里,对着 PowerShell 窗口发呆。这不是你的电脑坏了,也不是网络抽风,而是你从第一步就误判了 Claude Code 的底层属性。
Claude Code 不是一个传统意义上的桌面应用(比如 VS Code 或 PyCharm),它没有图形界面主进程,不依赖 Windows Installer(MSI)或 macOS 的 .pkg 包管理器。它本质上是一个命令行原生二进制工具(CLI binary),其核心是一个用 Rust 编写的、针对各平台预编译的可执行文件(claude或claude.exe)。所有你看到的“智能代码理解”“上下文感知补全”“沙箱执行”,都发生在这个二进制文件启动后,与 Anthropic 后端服务建立的安全连接中。它不运行 Node.js 运行时,也不解释 JavaScript;Node.js 在这里,只是 npm 安装流程中的一个“搬运工”和“环境检查员”。
这就直接决定了它的安装逻辑必须分层理解:
- 最底层是运行环境:你需要一个能执行
.exe(Windows)、Mach-O(macOS)或ELF(Linux)的系统,以及一个能调用 shell 命令的终端(PowerShell、CMD、Bash、Zsh)。 - 中间层是依赖链:它需要
ripgrep(用于高速代码搜索),在 Windows 上强烈推荐 Git for Windows(提供更稳定的 Bash 环境),在 Alpine Linux 上则必须手动安装libgcc和libstdc++(musl libc 与 glibc 的 ABI 兼容性问题)。 - 最上层才是安装方式:原生脚本、Homebrew、WinGet、apt/dnf/apk、npm —— 这些都不是“安装 Claude Code”,而是“把那个预编译好的
claude二进制文件,放到系统 PATH 能找到的地方,并配置好它的运行时依赖”。
我第一次部署时,在一台刚重装的 Windows 11 机器上,用官网的 PowerShell 命令irm https://claude.ai/install.ps1 | iex一气呵成,结果claude --version报错command not found。排查了两小时才发现,PowerShell 的执行策略(Execution Policy)默认是Restricted,它连自己的安装脚本都不让运行,更别说把生成的claude.exe放进%USERPROFILE%\.local\bin并加到 PATH 里了。这根本不是 Claude Code 的 bug,而是 Windows 安全模型与开发者工具链之间一个经典的历史断层。
所以,这篇文章不会教你“点哪里、输什么”,而是带你亲手拆解这个 CLI 工具的安装骨架:为什么必须用 Node.js 18+?npm 全局安装和原生脚本安装,到底谁在真正“干活”?当npm install -g @anthropic-ai/claude-code执行时,背后发生了哪五步原子操作?Git for Windows 到底给 Claude Code 提供了什么不可替代的能力?这些,才是你能在任何新环境(公司内网、客户服务器、甚至树莓派)里,5 分钟内稳稳跑起claude的真实能力。
提示:本文所有命令和路径均基于截至 2024 年 10 月的最新稳定版(v2.1.89+)。Claude Code 的更新极快,其安装机制本身也在持续演进。因此,文中所有“为什么”的解释,都指向其设计哲学,而非某个固定版本的临时 workaround。
2. Node.js 与 npm:不是主角,却是最关键的守门人
搜索热词里,“node安装教程”“npm安装”“npm : 无法加载文件...” 高居不下,这绝非偶然。Claude Code 的 npm 安装方式,是目前跨平台兼容性最好、对新手最友好的入口,但它也把 Node.js 生态里最古老、最顽固的一道门——权限与执行策略——直接推到了你面前。
2.1 Node.js 18+:一个硬性门槛背后的工程权衡
官方文档白纸黑字写着:“该包需要 Node.js 18 或更高版本”。这不是为了“炫技”或“强制升级”,而是由三个底层事实共同决定的:
ES Module (ESM) 原生支持:Node.js 18 是第一个将 ESM 作为一级公民、无需
--experimental-modules标志就能稳定运行的 LTS 版本。Claude Code 的 npm 包(@anthropic-ai/claude-code)内部大量使用了import语法来组织其构建脚本和 postinstall 钩子。如果你强行用 Node.js 16 安装,npm 会报ERR_REQUIRE_ESM,因为旧版 Node 会把.js文件默认当作 CommonJS 处理,而包里的index.js明确声明了"type": "module"。可选依赖(Optional Dependencies)的可靠解析:npm 包的核心机制之一,是根据你的操作系统和 CPU 架构,自动下载并安装对应的平台专用二进制包(如
@anthropic-ai/claude-code-win32-x64)。这个功能在 npm v8.19+(随 Node.js 18.17+ 发布)中才达到生产级稳定。更早的版本,在 Windows 上可能错误地拉取linux-x64的二进制,导致安装后claude命令根本无法执行。安全审计与证书链:Node.js 18+ 内置了更新的 TLS 1.3 协议栈和更严格的证书验证逻辑。Claude Code 的安装脚本(
install.ps1/install.sh)和 npm 包元数据,都托管在 HTTPS 且由 Let's Encrypt 或 Anthropic 自签名证书保护的域名下。老旧的 Node.js 版本可能因证书链不完整或过期而拒绝连接,表现为npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY。
实测对比:我在一台装有 Node.js 16.20.2 的 Ubuntu 22.04 机器上执行npm install -g @anthropic-ai/claude-code,过程看似成功,但claude --version返回zsh: command not found: claude。npm list -g @anthropic-ai/claude-code显示包已安装,ls -la $(npm config get prefix)/bin/却找不到claude符号链接。原因正是 postinstall 脚本因 ESM 语法被静默跳过。升级到 Node.js 18.20.2 后,同一命令秒级完成,claude --version立刻返回claude 2.1.89。
2.2 npm 全局安装:一场精密的“二进制搬运”仪式
当你敲下npm install -g @anthropic-ai/claude-code,你以为 npm 在“安装一个程序”,其实它在执行一套高度定制化的“物流调度”:
| 步骤 | npm 执行的操作 | 关键原理与风险点 |
|---|---|---|
| 1. 解析 package.json | 读取@anthropic-ai/claude-code的package.json,发现其bin字段为{ "claude": "./bin/cli.js" },并声明了optionalDependencies。 | bin字段告诉 npm:“把这个 JS 文件,链接成全局命令claude”。但cli.js本身只是一个薄薄的“启动器”,它不包含任何业务逻辑,只负责查找并 exec 那个真正的原生二进制。 |
| 2. 下载平台专属包 | npm 根据process.platform(如'win32')和process.arch(如'x64'),从 npm registry 拉取对应的可选依赖包,例如@anthropic-ai/claude-code-win32-x64。 | 这是整个流程最脆弱的一环。如果网络被干扰(如国内镜像源未同步),或 npm 配置了--no-optional,此步骤会失败,导致后续cli.js启动时找不到二进制,报错Error: Cannot find module '@anthropic-ai/claude-code-win32-x64'。 |
| 3. 执行 postinstall 脚本 | 运行@anthropic-ai/claude-code包内定义的postinstall脚本(通常是一个 Node.js 脚本)。这个脚本的核心任务是:① 解压下载好的.tar.gz包;② 将其中的claude.exe(Windows)或claude(macOS/Linux)文件,复制到node_modules/.bin/目录;③ 在全局 bin 目录(如C:\Users\YourName\AppData\Roaming\npm)创建指向它的符号链接。 | 这就是为什么npm uninstall -g @anthropic-ai/claude-code能彻底卸载。它不仅删包,还会清理postinstall创建的所有文件和链接。但若你曾用sudo npm install -g(见下文警告),这个链接可能被创建在/usr/local/bin/,npm uninstall就无权删除它,造成残留。 |
| 4. PATH 注入 | npm 会确保其全局 bin 目录(npm config get prefix+/bin)已加入系统的PATH环境变量。这是claude命令能在任意目录下被识别的根本原因。 | 在 Windows 上,这个路径通常是C:\Users\YourName\AppData\Roaming\npm;在 macOS/Linux 上,通常是/Users/YourName/.npm-global/bin或/usr/local/bin。如果echo $PATH里没有它,claude命令必然失败。 |
| 5. 权限校验与修复 | postinstall脚本会尝试chmod +x给二进制文件赋予权限(Linux/macOS),并在 Windows 上验证其数字签名。 | 如果你在 Linux 上用sudo npm install -g,二进制文件的所有者会变成root,普通用户运行claude时可能因权限不足而失败,报错Permission denied。 |
注意:绝对不要使用
sudo npm install -g(Linux/macOS)或以管理员身份运行 PowerShell/CMD(Windows)来安装 Claude Code。这会导致二进制文件所有权混乱、PATH 冲突,且极大增加安全风险。正确的做法是,先用npm config set prefix将全局安装目录设为当前用户可写路径(如~/.npm-global),再执行npm install -g。具体配置方法在本文第 4 节详述。
2.3 “npm : 无法加载文件...”:PowerShell 执行策略的破局之道
这是 Windows 用户遭遇率最高的拦路虎。错误信息npm : 无法加载文件 c:\program files\nodejs\npm.ps1, 因为在此系统上禁止运行脚本,其根源不在 npm,而在 Windows PowerShell 的Execution Policy(执行策略)。
PowerShell 默认策略是Restricted,它禁止运行任何本地脚本(.ps1文件),只允许运行交互式命令。而npm命令本身,在 Windows 上就是一个名为npm.ps1的 PowerShell 脚本(位于C:\Program Files\nodejs\)。当你在 CMD 中输入npm,CMD 会调用这个.ps1脚本,但 PowerShell 拒绝执行,于是报错。
三种安全、合规的解决方案:
(推荐)改用 CMD 或 Git Bash:完全绕过 PowerShell。在开始菜单搜索“命令提示符”(CMD),然后运行
npm install -g @anthropic-ai/claude-code。或者,安装 Git for Windows 后,使用其自带的 “Git Bash”,这是一个基于 MinGW 的轻量级 Bash 环境,npm在这里是一个标准的可执行文件,不存在脚本执行问题。临时提升当前会话策略:在 PowerShell 中,运行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser。RemoteSigned策略允许运行本地脚本,但要求从互联网下载的脚本必须有受信任的数字签名。-Scope CurrentUser表示只修改当前用户的策略,不影响系统其他用户,安全且无需管理员权限。执行后,npm命令即可正常使用。(不推荐)永久禁用策略:运行
Set-ExecutionPolicy Unrestricted -Scope CurrentUser。这会让 PowerShell 允许运行任何脚本,包括恶意脚本,严重违背最小权限原则,应绝对避免。
我自己的工作流是:日常开发全部使用 Git Bash。它不仅解决了npm的执行问题,还提供了比原生 PowerShell 更接近 Linux 的命令体验(ls,grep,ssh等),并且claude在 Git Bash 中能完美调用git命令进行代码仓库分析,这是 PowerShell 无法比拟的优势。
3. 原生安装脚本:最简路径,最高自由度
如果说 npm 安装是“坐高铁”,那么原生安装脚本(install.sh/install.ps1/install.cmd)就是“自驾游”。它绕过了 npm 的整个生态,直接从 Anthropic 的 CDN 下载预编译的二进制包,并将其解压、校验、放置到用户目录。这种方式速度更快、依赖更少、控制粒度更细,是生产环境和 CI/CD 流水线的首选。
3.1 三套脚本的底层差异与选择逻辑
官方提供了三套安装脚本,它们并非简单的“换皮”,而是针对不同 Windows 终端生态的深度适配:
| 脚本 | 适用终端 | 核心技术栈 | 优势 | 劣势 |
|---|---|---|---|---|
install.sh | WSL、macOS Terminal、Linux Shell | Bash/POSIX Shell | 跨平台一致性最高;能完美利用curl、tar、sha256sum等标准工具;支持bash -s stable这类灵活参数。 | 在原生 Windows 的 CMD 或 PowerShell 中无法直接运行(语法不兼容)。 |
install.ps1 | Windows PowerShell | PowerShell Core | 原生 Windows 集成度最高;能直接调用 Windows API(如Get-AuthenticodeSignature校验签名);与 Windows Defender 兼容性好。 | 受制于 PowerShell 执行策略(见上节);在 WSL 中需额外安装 PowerShell。 |
install.cmd | Windows CMD | 批处理(Batch) | 兼容性最广;能在任何 Windows 版本的 CMD 中运行;不依赖 PowerShell。 | 功能最弱;无法进行复杂的逻辑判断和错误处理;&&操作符在旧版 CMD 中不被支持,需用&替代。 |
我的选择建议:
- 如果你主要在 WSL 或 macOS/Linux 上工作,无脑用
install.sh。它是官方最成熟、更新最及时的脚本。 - 如果你坚持在原生 Windows 上工作,且已按上节方法配置好 PowerShell 执行策略,优先用
install.ps1,因为它能进行最严格的代码签名验证。 - 如果你在一个极度受限的、连 PowerShell 都被禁用的企业环境中,才考虑
install.cmd,并做好心理准备:它可能无法处理某些边缘错误。
3.2 执行install.sh的完整原子操作链
以 macOS 为例,执行curl -fsSL https://claude.ai/install.sh | bash这一行命令,背后是五个原子步骤的流水线:
curl -fsSL:-f表示失败时不输出错误页面(只返回 HTTP 错误码);-s是静默模式;-S是即使静默也显示错误;-L是跟随重定向。这确保了脚本下载的健壮性。- 管道
|:将curl下载的脚本内容,不落地、不保存,直接作为标准输入(stdin)传递给bash进程。这是“无痕安装”的关键,避免了在磁盘上留下临时文件。 bash解释执行:bash进程读取 stdin 中的脚本内容,并逐行解释执行。脚本首先会检测系统架构(uname -m),然后构造下载 URL,例如https://downloads.claude.ai/claude-code-releases/2.1.89/claude-darwin-arm64.tar.gz。- 下载与校验:脚本使用
curl下载.tar.gz包,同时并行下载同目录下的manifest.json.sig(签名文件)和manifest.json(校验清单)。然后调用gpg --verify验证签名,再用shasum -a 256对比二进制文件的 SHA256 值与清单中记录的值。任何一步失败,脚本都会exit 1并打印清晰的错误信息。 - 解压与部署:校验通过后,脚本将
.tar.gz解压到~/.local/share/claude/目录,并在~/.local/bin/创建指向~/.local/share/claude/claude的符号链接。最后,它会检查~/.local/bin是否已在PATH中,如果没有,则尝试将其追加到~/.bashrc或~/.zshrc。
这个过程之所以可靠,是因为它把“下载-校验-部署”做成了一个原子事务。你不会得到一个“半成品”:要么全部成功,claude命令可用;要么在任一环节失败,系统状态保持不变,没有任何垃圾文件残留。
3.3claude doctor:安装后的“体检报告”
安装完成后,别急着claude。先运行claude doctor。这个命令是 Anthropic 提供的终极诊断工具,它会生成一份详尽的“健康报告”,远超claude --version的简单信息。
claude doctor的输出结构如下(精简版):
# Claude Code Doctor Report ## System Information - OS: macOS 14.5 (23F79) - Architecture: arm64 - Shell: zsh 5.9 (x86_64-apple-darwin22.0) - Node.js: Not found (not required for native install) ## Binary Status - Binary Path: /Users/yourname/.local/bin/claude - Version: 2.1.89 - Integrity: ✅ Verified (SHA256 matches manifest) - Signature: ✅ Valid (signed by Anthropic PBC) ## Dependencies - ripgrep: ✅ Found at /opt/homebrew/bin/rg (v14.1.0) - Git: ✅ Found at /opt/homebrew/bin/git (v2.42.0) - Shell Tools: ✅ Bash available ## Configuration - Config Dir: /Users/yourname/.claude - Settings File: /Users/yourname/.claude/settings.json (exists) - Auto-updates: ✅ Enabled (channel: latest) ## Network - Connectivity: ✅ Can reach https://api.anthropic.com - Proxy: Not configured这份报告的价值在于,它把所有隐性的、容易出错的环节都显性化了:
- 它告诉你
ripgrep是否真的被找到并可用。很多用户以为装了rg就万事大吉,但claude需要的是它能被PATH找到,且版本兼容(v13+)。 - 它明确指出
Node.js的状态。对于原生安装,Not found是正确且期望的结果;如果这里显示Found,反而说明你的环境可能有污染。 - 它验证了二进制文件的双重完整性:既校验了 SHA256(防篡改),又验证了 Apple 公证签名(防冒充)。这是安全底线。
我曾遇到一个案例:claude --version能正常返回,但claude命令在打开项目后立即崩溃。运行claude doctor后发现,ripgrep的状态是❌ Not found。原来,我之前用 Homebrew 安装的rg被我误删了,而claude的错误日志里只有一句模糊的search failed。doctor报告直接定位了根因,让我只需brew install ripgrep一行命令就解决。
4. 环境配置的“隐形战场”:PATH、Shell 与 Git 的协同
安装成功只是万里长征第一步。claude能否在你的开发工作流中如鱼得水,取决于三个“看不见”的配置:PATH环境变量、默认 Shell、以及 Git 的安装与配置。它们共同构成了 Claude Code 的“运行时土壤”。
4.1 PATH:让claude命令无处不在的魔法通道
PATH是一个由冒号(:,Linux/macOS)或分号(;,Windows)分隔的目录列表。当你在终端输入claude,系统会从左到右,依次在PATH中的每个目录里查找名为claude(或claude.exe)的可执行文件。一旦找到,就立刻执行它。
问题来了:claude的二进制文件被安装在哪里?答案取决于你的安装方式:
- npm 全局安装:在
$(npm config get prefix)/bin目录下。你可以通过npm config get prefix查看,通常是~/.npm-global(你自定义的)或/usr/local(系统级)。 - 原生脚本安装:在
~/.local/bin/目录下(Linux/macOS)或%USERPROFILE%\.local\bin\(Windows)。 - Homebrew 安装:在
/opt/homebrew/bin/(Apple Silicon Mac)或/usr/local/bin/(Intel Mac/Linux)。
关键陷阱:这些目录,默认并不一定在你的PATH里。尤其是~/.local/bin/,它是 Linux/macOS 的“用户级 bin 目录”,但很多发行版(如 Ubuntu)的默认 shell 配置文件(~/.profile)并不会自动将其加入PATH。
验证与修复:
Linux/macOS:在终端运行
echo $PATH,查看输出中是否包含~/.local/bin或~/.npm-global/bin。如果没有,编辑你的 shell 配置文件(~/.bashrc或~/.zshrc),添加一行:export PATH="$HOME/.local/bin:$PATH" # 或者,如果你用了 npm prefix # export PATH="$HOME/.npm-global/bin:$PATH"然后运行
source ~/.zshrc(或source ~/.bashrc)使其生效。Windows:在 CMD 中运行
echo %PATH%,在 PowerShell 中运行$env:PATH。要添加C:\Users\YourName\.local\bin,请进入“系统属性” -> “高级” -> “环境变量”,在“用户变量”中找到Path,点击“编辑”,然后“新建”并粘贴该路径。
提示:永远把自定义的
bin目录放在PATH的最前面(即$PATH变量的开头)。这样可以确保你安装的claude优先于系统可能存在的、同名的其他程序,避免冲突。
4.2 Shell:claude的“母语”与性能分水岭
Claude Code 的核心能力之一,是能无缝集成到你的开发环境中,执行git status、git diff、npm run build等命令。它不是自己实现这些功能,而是调用你系统上已有的 Shell 工具。因此,claude使用哪个 Shell,直接决定了它的能力和性能。
官方文档明确指出,claude支持 Bash、Zsh、PowerShell 和 CMD。但它们的体验天差地别:
| Shell | 优点 | 缺点 | Claude Code 适配度 |
|---|---|---|---|
| Bash/Zsh | Linux/macOS 标准;git、rg等工具原生支持;语法强大;社区资源丰富。 | 在原生 Windows 上需额外安装(Git for Windows)。 | ⭐⭐⭐⭐⭐ 最佳。claude的所有高级功能(如沙箱执行、复杂上下文分析)都为此优化。 |
| PowerShell | Windows 原生;对象化管道;与 Windows API 深度集成。 | git命令在 PowerShell 中有时行为异常(如颜色输出乱码);rg等 Unix 工具需额外配置。 | ⭐⭐⭐☆☆ 良好。基础功能可用,但部分高级特性(如某些沙箱命令)可能受限。 |
| CMD | Windows 原生;兼容性最好。 | 功能极其有限;无管道、无变量、无函数;git输出格式不友好。 | ⭐⭐☆☆☆ 较差。仅能支持最基础的claude启动和简单查询,无法发挥其全部价值。 |
最佳实践:在 Windows 上,务必安装 Git for Windows。它不仅仅是一个 Git 客户端,它更是一个完整的、轻量级的 Bash 环境(Git Bash)。安装时,勾选 “Use Git and optional Unix tools from the Command Prompt” 选项。这样,你就可以在 CMD 或 PowerShell 中直接使用bash命令,或者直接启动 “Git Bash” 应用。
更重要的是,claude会自动检测git的存在,并优先使用git的 Bash 环境。如果你没装 Git for Windows,claude会退回到 PowerShell,此时你可能会发现,claude在分析一个 Git 仓库时,响应速度慢了一倍,且无法正确解析某些git log的输出格式。这就是 Shell 选择带来的真实性能落差。
4.3 Git:不只是版本控制,更是claude的“眼睛”和“手”
git对claude的意义,远超一个普通的依赖项。它是claude理解你代码上下文的核心传感器。
- “眼睛”:
claude通过git status、git diff --cached、git ls-files等命令,实时感知你当前工作区的状态:哪些文件被修改了?哪些是暂存的?哪些是未跟踪的?这使得它能为你提供“基于当前变更”的精准补全和解释,而不是泛泛而谈。 - “手”:在
claude的沙箱(Sandbox)模式下,它可以安全地执行git commit、git push等命令,帮你自动化代码提交流程。这要求git不仅要安装,还要正确配置了user.name和user.email。
配置检查清单:
- 安装验证:在终端运行
git --version,确认输出类似git version 2.42.0。 - 全局配置:运行
git config --global user.name "Your Name"和git config --global user.email "you@example.com"。这是git commit所必需的。 - SSH 密钥(可选但推荐):如果你用 SSH 方式克隆仓库(
git@github.com:user/repo.git),请确保ssh-agent正在运行,并已添加你的私钥(ssh-add ~/.ssh/id_rsa)。否则,claude在尝试git push时会卡住。
一个真实的教训:我曾在一个新配置的 CI 服务器上部署claude,claude doctor一切正常,但claude在分析一个 PR 时,始终无法获取到最新的git diff。排查数小时后发现,CI 环境的git是用apt-get install git安装的,但git config --global根本没设置!claude在执行git命令时,因为缺少用户信息而静默失败。加上两行git config后,问题瞬间解决。
5. 故障排除:从command not found到fatal: not a git repository的全链路诊断
再完美的安装流程,也架不住千奇百怪的环境。以下是我在实际支持中,遇到频率最高、也最具代表性的五大故障,以及一套标准化的、可复现的诊断链路。
5.1 故障一:command not found: claude(最常见)
现象:安装命令(npm install -g ...或curl | bash)显示成功,但紧接着claude --version就报错。
标准化诊断链路:
- 确认安装位置:运行
npm list -g @anthropic-ai/claude-code(npm 方式)或ls -la ~/.local/bin/claude*(原生方式),看二进制文件是否存在。 - 检查 PATH:运行
echo $PATH(macOS/Linux)或echo %PATH%(Windows),确认claude所在的bin目录是否在其中。 - 检查文件权限(Linux/macOS):运行
ls -la $(which claude)或ls -la ~/.local/bin/claude,确认文件有x(可执行)权限。如果没有,运行chmod +x ~/.local/bin/claude。 - 检查符号链接(Linux/macOS):如果
which claude返回一个路径,运行ls -la $(which claude),看它是否是一个指向真实二进制的链接,且链接目标存在。
根因与修复:90% 的情况是PATH未正确配置。修复方法见第 4.1 节。
5.2 故障二:npm : 无法加载文件...(Windows 专属)
现象:在 PowerShell 中输入npm就报错。
标准化诊断链路:
- 确认当前 Shell:看你的命令行提示符。如果是
PS C:\>,那就是 PowerShell;如果是C:\>,那就是 CMD。 - 检查执行策略:在 PowerShell 中运行
Get-ExecutionPolicy -List,查看CurrentUser和LocalMachine的策略。 - 验证 npm 位置:运行
Get-Command npm,看它是否指向C:\Program Files\nodejs\npm.ps1。
根因与修复:执行策略为Restricted。运行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser(推荐)或改用 CMD/Git Bash。
5.3 故障三:fatal: not a git repository (or any of the parent directories): .git(claude启动时报)
现象:claude命令本身能运行,但在你cd进入一个项目目录后,claude启动时立即报这个错误。
标准化诊断链路:
- 确认当前目录:运行
pwd(macOS/Linux)或cd(Windows),看是否在一个 Git 仓库的根目录下。 - 手动测试 git:在同一个目录下,运行
git status,看是否报同样的错误。如果git status也报错,说明这个目录根本不是一个 Git 仓库。 - 检查 .git 目录:运行
ls -la | grep .git(macOS/Linux)或dir | findstr ".git"(Windows),看.git目录是否存在且可读。
根因与修复:你没有在 Git 仓库中运行claude。claude的设计哲学是“项目驱动”,它需要一个 Git 仓库来提供上下文。解决方案很简单:git init初始化一个空仓库,或者cd到一个已有的、合法的 Git 项目根目录下再运行claude。
5.4 故障四:claude启动后卡住,无响应
现象:输入claude,光标闪烁几秒,然后什么也不发生。
标准化诊断链路:
- 检查网络:运行
ping api.anthropic.com或curl -I https://api.anthropic.com,确认网络连通性。 - 检查代理:如果你在公司内网,很可能需要代理。运行
echo $HTTP_PROXY(macOS/Linux)或echo %HTTP_PROXY%(Windows),看是否有代理设置。claude doctor的 “Network” 部分也会显示Proxy: Not configured。 - 启用调试日志:运行
claude --verbose,它会输出详细的连接和请求日志,能清晰看到卡在哪个 HTTP 请求上。
根因与修复:通常是网络问题。如果需要代理,请在settings.json中配置:
{ "env": { "HTTP_PROXY": "http://your-proxy:8080", "HTTPS_PROXY": "http://your-proxy:8080" } }5.5 故障五:claude update失败,提示EACCES: permission denied
现象:运行claude update,报错Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/@anthropic-ai/claude-code'。
标准化诊断链路:
- 确认安装方式:运行
which claude,如果路径是/usr/local/bin/claude,说明你很可能是用sudo npm install -g安装的。 - **检查