在 zsh 终端中遇到 nvm --version 报错 "command not found: nvm",这通常是因为 nvm(Node Version Manager)的初始化脚本未正确加载到 zsh 环境中。nvm 在安装后需要配置环境变量才能被 zsh 识别,而 zsh 默认使用 ~/.zshrc 文件作为配置文件。macOS 用户常用 Homebrew 安装 nvm,但若未在配置文件中添加加载代码,就会出现此问题。
解决步骤(逐步操作)
- ****验证 nvm 是否已安装
打开终端(Terminal 或 iTerm),运行以下命令检查 nvm 安装状态:
brew list nvm
Bash
如果输出显示 nvm 的相关信息(如版本路径),说明已安装;如果提示 "not installed",请先安装 nvm:
brew install nvm
Bash
安装完成后,nvm 的可执行文件默认位于 /usr/local/opt/nvm (Intel Mac)或 /opt/homebrew/opt/nvm (Apple Silicon Mac)。
- ****编辑 ~/.zshrc 文件添加初始化代码
zsh 依赖 ~/.zshrc 文件加载环境变量。使用文本编辑器(如 vim 或 nano)打开文件:
vim ~/.zshrc
Bash
按 i 进入插入模式,在文件末尾添加以下代码(这段代码确保每次启动 zsh 时自动加载 nvm):
export NVM_DIR="$HOME/.nvm"
[ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" # 对于 Intel Mac
# 如果是 Apple Silicon Mac(M1/M2 芯片),改用:
# [ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && . "/opt/homebrew/opt/nvm/nvm.sh"
Bash
添加后,按 Esc 退出插入模式,输入 :wq 保存并退出。
****注意:如果您不确定 Mac 芯片类型,可以通过 uname -m 查看(输出 x86_64 为 Intel, arm64 为 Apple Silicon)。同时,确保代码中的路径与 Homebrew 安装路径一致。
- ****应用更改并测试 nvm
保存文件后,使用 source 命令重新加载配置:
source ~/.zshrc
Bash
然后验证 nvm 是否可用:
nvm --version
Bash
如果输出 nvm 版本号(如 0.39.7 ),说明问题已解决。如果仍报错,请重启终端或运行 exec zsh 重新加载 zsh。
- ****额外检查(可选)
- ****如果问题未解决:确保其他配置文件(如 ~/.bash_profile 或 ~/.profile )没有冲突。这些文件可能被 zsh 间接引用,但它们不是必须的。您可以运行以下命令临时添加环境变量测试:
export NVM_DIR="$HOME/.nvm"
source "$(brew --prefix nvm)/nvm.sh"
nvm --version
Bash
如果输出正常,说明代码正确,只需永久添加到 ~/.zshrc 。
- ***清理缓存:偶尔 zsh 缓存可能导致问题,运行 rm ~/.zcompdump 清除缓存后重启终端。
- ****安装完整性:如果 nvm 安装损坏,重新安装:
brew uninstall nvm
brew install nvm
Bash
原因解释
该问题发生在 zsh 启动时未加载 nvm 的 shell 脚本( nvm.sh )。nvm 通过修改环境变量(如 $PATH )来实现命令调用,而 zsh 默认不会读取 ~/.bash_profile (Bash 的配置文件)。因此,必须在 ~/.zshrc 中显式添加初始化代码,确保 nvm 在当前会话中可用。Homebrew 安装的 nvm 需要指定正确路径,否则 source 命令无法找到脚本。