Mac 上安装 Claude Code 完整指南:环境配置与避坑实践
1. 为什么要在 Mac 上折腾 Claude CodeMac 用户对终端工具的挑剔程度用过一圈之后基本都会收敛到同一个判断标准装起来别太折腾、跑起来别太吃资源、用起来别太割裂。Claude Code 这个命令行 AI 编程助手恰好踩在这三条线上。它不是那种装完就躺在那里吃灰的玩具而是能直接嵌进你现有工作流的工具——你在终端里敲一行指令它就能读你当前项目的文件结构、理解上下文、给出修改建议甚至直接帮你改代码。我最初接触它的时候心里是有点抗拒的。毕竟 VS Code 里已经有一堆 AI 插件了再装一个命令行工具听起来像是给自己找麻烦。但实际用下来发现Claude Code 的定位跟那些插件完全不一样。插件是你打开编辑器它才在而 Claude Code 是你在终端里干活它就在。这个区别在调试脚本、批量处理文件、快速原型验证这些场景下特别明显——你不需要切窗口不需要等编辑器加载直接在终端里把问题丢给它就行。这篇内容面向的是 Mac 用户尤其是那些已经装了 Homebrew、日常在终端里跑命令、对 Node.js 生态不算陌生的人。如果你从来没碰过终端也不用慌我会把每一步拆到你能照着敲的程度。但如果你连 Homebrew 是什么都不知道建议先去补一下 Mac 开发环境的基础配置不然中间某些步骤可能会卡住。提示Claude Code 目前主要通过 npm 分发所以 Node.js 环境是硬性前提。Mac 上装 Node.js 有好几种方式后面会详细对比。2. 装之前先把 Mac 环境理清楚2.1 检查你的 macOS 版本和芯片架构Claude Code 对系统版本没有特别苛刻的要求但 macOS 12 及以上会稳妥很多。打开终端敲sw_vers你会看到类似这样的输出ProductName: macOS ProductVersion: 14.5 BuildVersion: 23F79ProductVersion 就是你的系统版本。如果低于 12建议先升级系统不然后面某些依赖可能会报错。接下来确认芯片架构uname -m输出arm64你是 Apple SiliconM1/M2/M3/M4机器输出x86_64你是 Intel 机器这个信息很重要因为后面装 Homebrew 和 Node.js 的时候路径会不一样。Apple Silicon 的 Homebrew 默认装在/opt/homebrewIntel 的装在/usr/local。很多教程不区分这一点导致新手照着敲命令发现command not found其实就是路径没对上。2.2 Homebrew 装没装一条命令见分晓brew --version如果输出了版本号说明已经装好了直接跳到下一节。如果提示command not found那就得先装 Homebrew。装 Homebrew 的命令官方一直在更新最稳妥的方式是去 brew.sh 复制最新的安装命令。但这里有个坑国内网络环境下官方脚本下载速度可能很慢甚至中途断掉。我的经验是如果第一次跑失败了别急着重试先检查一下网络或者换个时间段再试。安装过程中会提示你输入密码这是正常的因为 Homebrew 需要写入/opt/homebrew或/usr/local目录。装完之后按照终端提示执行那两行echo命令把 Homebrew 加到你的 shell 环境变量里。注意如果你用的是 zshMac 默认 shell配置文件是~/.zshrc如果是 bash则是~/.bash_profile。改错文件的话新开终端窗口会发现 brew 又找不到了。2.3 Node.js 的三种装法我为什么推荐 nvmMac 上装 Node.js 常见三条路方式优点缺点适合谁官网 pkg 安装包双击即装最简单版本切换麻烦权限问题多只装一次就不管的人Homebrew跟系统包管理统一升级 Node 会牵连其他依赖已经重度依赖 brew 的人nvm版本随意切互不干扰多一层管理初次配置稍繁琐需要多版本共存的人我强烈推荐 nvm。原因很简单Claude Code 对 Node 版本有要求后面会说而你其他项目可能还在用旧版本 Node。用 nvm 可以随时nvm use 18或nvm use 20不会互相打架。装 nvm 的命令curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash装完之后同样需要把 nvm 加到 shell 配置里。安装脚本通常会帮你自动加但有时候不会。检查一下~/.zshrc里有没有这几行export NVM_DIR$HOME/.nvm [ -s $NVM_DIR/nvm.sh ] \. $NVM_DIR/nvm.sh [ -s $NVM_DIR/bash_completion ] \. $NVM_DIR/bash_completion没有的话手动加上然后source ~/.zshrc验证 nvm 是否可用nvm --version2.4 装一个合适的 Node 版本Claude Code 要求 Node.js 18 或更高版本。我实测下来Node 20 LTS 最稳Node 22 也没问题但如果你其他项目有兼容性顾虑就选 20。nvm install 20 nvm use 20 nvm alias default 20第三行是把 Node 20 设为默认版本这样新开终端不用每次都手动nvm use。验证node -v npm -v应该分别输出v20.x.x和10.x.x之类的版本号。如果 node 有输出但 npm 没有说明 npm 没跟着装好可以试试nvm reinstall-packages或者直接重装 Node。3. Claude Code 的安装方式与选择逻辑3.1 npm 全局安装最直接的路环境准备好之后安装 Claude Code 本身只需要一行npm install -g anthropic-ai/claude-code这里的-g是全局安装意味着你可以在任何目录下直接敲claude命令。如果你不想要全局安装也可以去掉-g但那样就得在每个项目里单独装用起来很别扭不推荐。安装过程中如果卡在idealTree或者下载很慢大概率是 npm 源的问题。可以临时切到国内镜像npm config set registry https://registry.npmmirror.com装完之后想切回官方源npm config set registry https://registry.npmjs.org提示镜像源只影响下载速度不影响包的内容。但有些公司内网会屏蔽外部源这种情况下你可能需要配置代理或者找 IT 要内部镜像地址。3.2 验证安装是否成功claude --version如果输出了版本号恭喜你装好了。如果提示command not found八成是 npm 全局 bin 目录不在 PATH 里。查一下npm config get prefix假设输出是/Users/你的用户名/.nvm/versions/node/v20.x.x那么 bin 目录就是它下面的bin。确认这个路径在 PATH 里echo $PATH如果没有在~/.zshrc里加一行export PATH$PATH:/Users/你的用户名/.nvm/versions/node/v20.x.x/bin然后source ~/.zshrc再试。3.3 首次运行会经历什么第一次敲claude的时候它会引导你完成认证。通常是在浏览器里打开一个页面让你登录并授权。授权完成后终端里会显示登录成功。这里有个细节Claude Code 的认证信息会存在本地某个配置目录里具体路径跟版本有关。如果你后面遇到登录状态丢失的问题大概率是这个目录被清理了重新登录一次就行。认证完成后你会进入一个交互式界面。可以试着问它一个简单问题比如帮我看看当前目录下有哪些文件看看它能不能正常读取上下文。4. 把 Claude Code 接进你的日常工具链4.1 VS Code 里的 Claude Code终端集成最省心很多人以为要在 VS Code 里用 Claude Code 得装什么特殊插件其实不用。最直接的方式就是在 VS Code 里打开集成终端快捷键Ctrl或菜单里选然后直接敲claude。因为 VS Code 的终端继承了你系统的 shell 环境所以只要系统终端里能用VS Code 里就能用。这种方式的优势是你一边看代码一边在终端里跟 Claude Code 对话它读的文件就是你当前打开的项目。不需要额外配置也不会有插件兼容性问题。如果你想要更紧密的集成比如让 Claude Code 直接读取你当前打开的文件路径可以在 VS Code 的设置里配置一下终端的环境变量把当前文件路径传进去。但这个属于进阶玩法初期没必要折腾。4.2 在 iTerm2 或 Warp 里跑体验更顺滑Mac 自带的 Terminal.app 能用但如果你经常跑命令行工具建议换 iTerm2 或者 Warp。iTerm2 的优势是分屏和搜索做得好Warp 则是自带 AI 补全和块状输出跟 Claude Code 的交互式界面搭配起来很舒服。配置上没什么特别的装好之后把默认 shell 设成 zsh确保~/.zshrc里的环境变量都加载了就行。唯一要注意的是有些终端模拟器对 ANSI 转义序列的支持不一样如果 Claude Code 的界面显示乱码换个终端试试。4.3 跟 Git 工作流的配合Claude Code 本身不直接操作 Git但它能帮你生成 commit message、解释 diff、甚至帮你写.gitignore。我的习惯是改完代码后在终端里敲claude然后说帮我看看这次改动生成一个 commit message。它会读取git diff的输出给你一个像模像样的提交信息。这个流程的前提是你的项目已经初始化了 Git并且当前目录在仓库里。如果不在仓库里Claude Code 读不到 diff自然也给不出有用的建议。注意Claude Code 读取的是你本地的文件内容所以敏感信息比如密钥、密码不要放在它会读到的目录里。虽然官方说不会滥用数据但养成好习惯总没错。5. 装完之后最容易踩的几个坑5.1 权限报错EACCES 怎么破用 npm 全局安装时最常见的报错就是EACCES: permission denied。这是因为 npm 试图往系统目录写文件但当前用户没权限。网上有些教程会让你用sudo npm install -g我强烈不建议这么做。sudo 装出来的包后续升级和卸载都会遇到权限问题而且有安全风险。正确的做法是要么用 nvmnvm 装的 Node 天然没有权限问题要么手动改 npm 的全局目录mkdir ~/.npm-global npm config set prefix ~/.npm-global export PATH~/.npm-global/bin:$PATH把最后一行加到~/.zshrc里然后重新npm install -g anthropic-ai/claude-code。5.2 网络超时npm 装到一半卡住前面提过换镜像源但有时候换了源还是卡。这时候可以试试npm install -g anthropic-ai/claude-code --verbose--verbose会打印详细日志你能看到到底卡在哪一步。如果是某个特定包下载失败可以单独装那个包或者清一下 npm 缓存npm cache clean --force然后再重试。5.3 版本冲突Node 版本不对导致的各种怪问题Claude Code 在 Node 16 上可能会报一些莫名其妙的错比如SyntaxError: Unexpected token或者模块加载失败。如果你确认装的是最新版 Claude Code 但还是报错先检查 Node 版本node -v低于 18 的话用 nvm 切到 20nvm install 20 nvm use 20然后重新装 Claude Code。这个问题我遇到过好几次每次都是 Node 版本太旧导致的。5.4 卸载与重装干净利落的做法如果你想把 Claude Code 卸干净重装npm uninstall -g anthropic-ai/claude-code然后检查一下配置目录有没有残留。不同版本路径可能不一样常见的位置在~/.claude或者~/Library/Application Support/claude-code。删掉这些目录再重新安装就能得到一个全新的环境。重装之前记得备份你自定义的配置如果有的话不然重新配一遍挺烦的。6. 让 Claude Code 真正好用的几个配置习惯6.1 项目级配置 vs 全局配置Claude Code 支持在项目根目录放一个配置文件用来定义这个项目的特定行为。比如你可以告诉它这个项目用 Python不要给我生成 JavaScript 代码或者忽略node_modules目录。全局配置则放在用户目录下对所有项目生效。我的建议是通用偏好放全局项目特定规则放项目里。这样换项目的时候不用重新调。具体配置文件的格式和字段不同版本可能有差异建议直接看官方文档或者claude --help的输出。不要照搬网上过时的教程版本对不上会白折腾。6.2 把常用指令做成 alias如果你经常用某几个 Claude Code 指令可以在~/.zshrc里加 aliasalias ccclaude alias ccrclaude --resume这样敲起来快很多。但注意别跟系统已有命令冲突比如cc在某些系统上是 C 编译器的别名加之前先which cc确认一下。6.3 跟其他 AI 工具共存你机器上可能已经装了其他 AI 编程工具比如 GitHub Copilot、Codeium 之类的。它们跟 Claude Code 不冲突因为工作层面不一样。Copilot 主要在编辑器里做行级补全Claude Code 在终端里做任务级交互。但如果你发现终端响应变慢可能是多个工具同时扫描文件导致的。这时候可以检查一下有没有后台进程在跑必要时关掉不用的工具。7. 关于版本更新和长期维护Claude Code 更新挺频繁的新功能和小修复不断。保持更新的命令npm update -g anthropic-ai/claude-code但我不建议无脑追新。如果你当前版本用着没问题可以先不升等一两个版本再升避开可能的新 bug。升级之前看一眼 release notes确认没有破坏性变更。另外Node 版本也要定期关注。Node 20 是 LTS支持到 2026 年暂时不用担心。但如果你用的是奇数版本比如 21、23那些不是 LTS生命周期短建议尽早切到 LTS 版本。我在实际使用中的体会是Claude Code 这类工具的价值不在于它一次能帮你写多少代码而在于它缩短了想到和做到之间的距离。你在终端里有个想法敲一行字它就能帮你验证。这个反馈循环一旦建立起来就很难回去了。装的时候多花十分钟把环境理清楚后面省下的时间远不止十分钟。

相关新闻

Cadence 17.2 Allegro 改一段走线线宽总选错?让 Codex 走 TaoToken 对照 Cline segs 与 Clines

Cadence 17.2 Allegro 改一段走线线宽总选错?让 Codex 走 TaoToken 对照 Cline segs 与 Clines

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 18:09:12 阅读更多 →
树莓派系统文件深度解析:config.txt、cmdline.txt与设备树实战

树莓派系统文件深度解析:config.txt、cmdline.txt与设备树实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 18:09:12 阅读更多 →
OpenRouter 用量榜:TaoToken 上跑 Kimi K2.7 Code 选哪条通道

OpenRouter 用量榜:TaoToken 上跑 Kimi K2.7 Code 选哪条通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 18:09:12 阅读更多 →

最新新闻

RxDB 自定义响应式适配器指南:用 Angular Signals、Preact Signals 与 Vue Refs 替代 RxJS Observables

RxDB 自定义响应式适配器指南:用 Angular Signals、Preact Signals 与 Vue Refs 替代 RxJS Observables

数据库NoSQL嵌入式数据库实时数据库 【免费下载链接】rxdb The local-first database that runs on every JS runtime and replicates with your existing backend - no vendor, no lock-in - https://rxdb.info/ 项目地址: https://gitcode.com/gh_mirrors/rx/rxdb…

2026/9/20 18:56:01 阅读更多 →
xiaomusic在线搜索插件:语音点歌实战选型指南

xiaomusic在线搜索插件:语音点歌实战选型指南

xiaomusic在线搜索插件:语音点歌实战选型指南 【免费下载链接】xiaomusic 使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic xiaomusic 是让小爱音箱播放音乐的工具,它的「…

2026/9/20 18:56:01 阅读更多 →
使用 Web3.js 与 EIP-6963 构建中级 dApp:多钱包发现、账户余额查询与以太转账实战

使用 Web3.js 与 EIP-6963 构建中级 dApp:多钱包发现、账户余额查询与以太转账实战

使用 Web3.js 与 EIP-6963 构建中级 dApp:多钱包发现、账户余额查询与以太转账实战 【免费下载链接】web3.js Collection of comprehensive TypeScript libraries for Interaction with the Ethereum JSON RPC API and utility functions. 项目地址: https://gitc…

2026/9/20 18:56:01 阅读更多 →
电脑总卡?用AtlasOS的4款驱动优化工具,完整配置指南帮你把系统延迟降下来

电脑总卡?用AtlasOS的4款驱动优化工具,完整配置指南帮你把系统延迟降下来

电脑总卡?用AtlasOS的4款驱动优化工具,完整配置指南帮你把系统延迟降下来 【免费下载链接】Atlas 🚀 An open and lightweight modification to Windows, designed to optimize performance, privacy and usability. 项目地址: https://git…

2026/9/20 18:56:01 阅读更多 →
数据挖掘驱动案件串并:从特征工程到图分析排嫌疑人

数据挖掘驱动案件串并:从特征工程到图分析排嫌疑人

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 18:56:01 阅读更多 →
Cube Databricks JDBC 驱动深度解析:从变更日志看认证、导出桶与 SQL 下推的演进

Cube Databricks JDBC 驱动深度解析:从变更日志看认证、导出桶与 SQL 下推的演进

Cube Databricks JDBC 驱动深度解析:从变更日志看认证、导出桶与 SQL 下推的演进 【免费下载链接】cube 📊 Cube Core is open-source semantic layer for AI, BI and embedded analytics 项目地址: https://gitcode.com/gh_mirrors/cu/cube 本指…

2026/9/20 18:55:01 阅读更多 →

日新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →