装好Claude Code,兴冲冲敲了个claude,结果蹦出来command not found?安装没问题,只是系统不知道可执行文件在哪。注册一下PATH就搞定了。
先说解决方法
根据你用的Shell,敲一行命令就行。
Zsh环境(macOS默认)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
Bash环境(Linux默认)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
现在试试claude,应该能用了。
以上就是解决方法。下面是给好奇"为什么会这样"的人准备的。
跟Windows有什么不一样?
Windows的安装程序会自动帮你设好环境变量,所以你根本不用操心。
但Mac和Linux的理念不同:"你的环境你自己管。"系统设置和个人设置是隔开的,这是出于安全和效率的考虑。不过说实话,从Windows过来的人一开始会有点不适应。
Shell是什么?
用终端的时候老是看到"Shell"这个词。简单说,它就是你和操作系统之间的翻译官。
你在终端里敲claude,Shell接收后告诉操作系统"把这个跑起来"。那个黑色界面本身不是Shell,里面处理命令的那个软件才是。
最常见的是Zsh和Bash,它们的配置文件不一样,所以得知道自己用的是哪个。
为什么会出现command not found
在终端敲命令时,Shell会在预先注册的目录列表里找"有没有这个名字的程序"。这个列表就是PATH环境变量。
问题在于:Claude Code安装在~/.local/bin,但大多数系统默认没把这个路径加到PATH里。安装脚本会尝试添加,但有时候会遗漏,或者没法立刻在当前终端生效。
所以需要我们自己加上。
怎么查看自己用的是哪个Shell
在终端里敲这个。
echo $SHELL
- 看到
/bin/zsh→ 配置~/.zshrc - 看到
/bin/bash→ 配置~/.bashrc
Bash有时还会读取~/.bash_profile或~/.profile。
如果文件不存在也别担心。
>>运算符会自动创建新文件。
逐条拆解命令
搞清楚这些命令具体做了什么,以后装别的工具也用得上。
echo和>> — 把文本输出并追加到文件末尾。意思是"在配置文件最后加一行"。
export PATH="..." — 把~/.local/bin加到现有PATH的前面。放在前面是为了让同名程序优先执行我们指定目录里的那个。
source — Shell配置文件本来只在打开终端时才读取。source的意思是"现在立刻重新读一遍"。不执行这个的话,得关掉终端再重新打开才能生效。
终端命令的结构(附赠)
终端命令基本是**[对谁] [做什么] [怎么做]**的结构。
[可执行文件] [子命令/动词] [选项和参数]
- 对谁:要调用的程序名(如
claude、npm、git) - 做什么:具体动作(如
config、install、commit) - 怎么做:附加信息或详细设置(如
--help、-v、文件名)
掌握这个结构,以后遇到陌生命令也能大概看懂。
最后
以后不管装什么,碰到command not found都不用慌了。想一下"哦,PATH没注册",然后搞定就行。