当你满心欢喜地在终端键入 openclaw,只迎来那冰冷的“command not found”时,问题差不多总出在同一个地方:你的系统完全不清楚 npm 把全局命令隐匿于哪个文件夹之中。此痛点在所有主流操作系统里都存在,然而好消息是,定位并修复它只需不到五分钟。
# 第一步:查看 npm 全局包安装路径
npm prefix -g
# 示例输出:/Users/你的用户名/.nvm/versions/node/v22.3.0
# 或 /usr/local
# 或 C:\Users\你的用户名\AppData\Roaming\npm
# 第二步:检查该路径是否在 PATH 中
echo $PATH
# 在输出中搜索第一步的路径,若不存在则需要添加
不管你所运用的是哪一款计算机操作系统,修复伊始都在于寻觅npm的全局bin目录,开启你的终端,驱使运行 npm prefix -g,此命令会给出npm安装全局包那作为根源的目录,而实际的可执行文件便放置于这个目录下的 bin 文件夹之内。比方说,在macOS之上,或者Linux之上来讲,它有可能会输出,/usr/local,又或者,/Users/你的用户名/.nvm/versions/node/v22.x.x,与之相对应的bin路径,那便是,/usr/local/bin,或者是还要再加上,/bin。其在Windows环境下,一般会给出这样的输出,即 C:\Users\你的用户名\AppData\Roaming\npm ,而此便是你所要添加进去的路径。
# 第一步:获取 npm 全局 bin 路径
npm prefix -g
# 假设输出:/Users/yourname/.nvm/versions/node/v22.3.0
# 第二步:写入 ~/.zshrc
echo 'export PATH="$(npm prefix -g)/bin:$PATH"' >> ~/.zshrc
# 第三步:立即生效(无需重启终端)
source ~/.zshrc
# 第四步:验证
openclaw --version
假若是npm prefix -g这个命令自身出现了报错的情况,这便意味着你的Node.js环境存在着问题。最为常见的缘由是,Node.js压根就没有被安装,又或者其版本比OpenClaw所要求的22版本要低。你得先去参照OpenClaw的Node.js版本升级指南 ,把Node.js更新为符合要求的版本之后,再折回去处理PATH的问题。
rehash
openclaw --version
# 写入配置文件
echo 'export PATH="$(npm prefix -g)/bin:$PATH"' >> ~/.bashrc
# 立即生效
source ~/.bashrc
# 验证
openclaw --version
打从macOS Catalina版本起始,系统默认用到的shell是zsh,它的配置文件处在用户主目录之下的.zshrc。当寻得npm的全局bin路径以后,你得借助文本编辑器或者借由echo命令把它添入这个文件之中。举例来说,要是路径为 /Users/你的用户名/.nvm/versions/node/v22.x.x/bin,那么你能够在 ~/.zshrc 文件里增添一行,即 export PATH=$PATH:/Users/你的用户名/.nvm/versions/node/v22.x.x/bin。
echo 'export PATH="$(npm prefix -g)/bin:$PATH"' >> ~/.profile
source ~/.profile
假如你所运用的是较为陈旧的 macOS 版本,并且 shell 是 bash,那么配置文件一般而言乃是 ~/.bash_profile。修改跟保存该文件之后,一定要执行 source~/.zshrc 或者重新开启终端窗口,如此修改才会生效。之后再度运行 openclaw --version,理应就能瞧见正确的版本信息了。
# 获取 npm 全局路径
$npmBin = npm prefix -g
# 添加到当前会话 PATH
$env:Path += ";$npmBin"
# 永久写入用户级别 PATH
[Environment]::SetEnvironmentVariable(
"Path",
"$([Environment]::GetEnvironmentVariable('Path', 'User'));$npmBin",
"User"
)
# 验证
openclaw --version
针对大多数Linux发行版而言,Bash属于默认shell,其配置文件呢,也就是那个~/.bashrc,一般在开启一个全新的终端窗口之际会被加载。可是呢,在某些特定情形下,借助图形界面登录或者某些脚本调用的非交互式登录shell,有可能并不会加载那个~/.bashrc。假定你已然依照常规方式对 ~/.bashrc 予以修改,然而却发觉有的时候并不生效,那么有一个稳妥可靠的解决办法是,把 export PATH=$PATH:$(npm prefix -g)/bin 这一命令,同时增添至 ~/.profile 文件里。
当登录 shell 启动之际,~/.profile 会被予以读取,其能够覆盖更多的场景。在进行添加操作之后,需将文件予以保存,接着重新登录系统,或者执行 source~/.profile 以便使配置即刻生效。如此一来,能够确保不管你是经由何种方式进入终端的,openclaw 命令均可被找到。
echo 'export PATH="$(npm prefix -g)/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
openclaw --version
于Windows系统里对PATH加以修改存在两种较为常用的办法。办法A属于图形界面操作,按下Win与S组合键去搜索“环境变量”,将“编辑系统环境变量”予以打开,点击呈示的“环境变量”。于“用户变量”列表之内寻觅 Path 变量,双击该变量,接着点击“新建”,粘贴由 npm prefix -g 输出的路径(一般而言是 C:\Users\你的用户名\AppData\Roaming\npm),自此往后逐一点击“确定”方可保存所有窗口的设置。
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
npm install -g openclaw@latest
方法B借助PowerShell命令,能一步达成当前会话即刻生效与持久化,先以管理员身份开启PowerShell,再执行 [Environment]::SetEnvironmentVariable("Path""$env:Path;C:\Users\你的用户名\AppData\Roaming\npm""User")。这一命令会把路径永久性加入到现下用户的 PATH 变量里。留意到,不管运用哪一种方式,在改变之后都定要全然再度开启所有终端窗口,其中涵盖 VS Code 的内置终端,如此新的 PATH 才会起作用。
# 检查 ~/.zshrc 或 ~/.bashrc 是否包含以下内容
grep -n "nvm" ~/.zshrc # 或 ~/.bashrc
# 若没有,手动写入
cat >> ~/.zshrc << 'EOF'
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
EOF
source ~/.zshrc
WSL2子系统尽管跟Windows紧密整合,然而它运行着一个完整的Linux内核,具备单独的环境变量以及PATH。你于Windows本机装设的Node.js和npm,在WSL2里是没法访问到的。所以,在WSL2终端碰到command not found,必须依照Linux的标准流程来处置。
# 查看当前默认版本
nvm alias default
# 若输出为 N/A 或旧版本,重新设置
nvm alias default 22
nvm use 22
# 重装 openclaw(当前版本下重装)
npm install -g openclaw@latest
# 验证
openclaw --version
若于WSL2里执行npm prefix -g,那输出的路径竟是/mnt/c/Users/...这类的Windows路径,此情形恰好表明你当下所用的是Windows方面的Node.js。你得先于WSL2内部去安装Linux版的Node.js(版本要≥22),之后再重新进行全局安装OpenClaw。其后,把WSL2 Linux环境里的npm bin路径,像/home/你的用户名/.nvm/.../bin这样的,添加至~/.bashrc里,或者添加到~/.zshrc之中。
# 切换到 Node 22
nvm use 22
# 确认当前 node 版本
node -v # 应为 v22.x.x
# 在当前版本下重装
npm install -g openclaw@latest
openclaw --version
借助nvm去管理Node.js版本之际,PATH的组成会呈现动态变化态势。在展现command not found情形之时,通常存在三种状况。其中状况A为,致使nvm的初始化代码未能妥当写入你的shell配置文件(~/.zshrc或者~/.bashrc)。你要去查看文件的末尾之处,是不是涵盖了类如 export NVM_DIR="$HOME/.nvm",以及 [ -s"$NVM_DIR/nvm.sh" ] && \."$NVM_DIR/nvm.sh" 这样的代码呢。
状况B:nvm虽说已然加载,然而却未设定默认的Node.js版本。执行 nvm alias default v22.x.x便可设定一个默认版本。状况C:你兴许在某个Node.js版本之下安装了OpenClaw,随后却转换到了另外一个版本,致使命令缺失。由于每一个版本的全局包都放置于 $NVM_DIR/versions/node/v版本号/bin/ 之处,彼此之间不存在相通的情况。其解决办法是切换至正确的Node.js版本,随后再次执行 npm install -g openclaw@latest。
你于配置开发环境之际,所碰到的最为令人抓狂之 PATH 错误是何种模样的,欢迎于评论区分享你的经历,亦不要忘了点赞以及收藏本文,下次碰到类似问题便能够快速寻得了。
# 查看 root 的 npm prefix(有 sudo)
sudo npm prefix -g
# 示例:/usr/local
# 查看当前用户的 npm prefix(无 sudo)
npm prefix -g
# 示例:/home/yourname/.nvm/...(两者不同,说明装错了)