Mac下zsh提示npm命令不存在但bash环境可正常运行如何解决
问题根因说明
该问题不是npm或nvm安装方式错误导致的。
现在Mac系统默认使用zsh作为终端shell,你安装nvm时,nvm的初始化脚本仅写入了bash的配置文件(~/.bash_profile或~/.bashrc)。zsh启动时不会主动加载bash的配置内容,因此无法识别nvm管理的npm命令;而VSCode终端使用的是bash,会加载对应配置,所以可以正常执行npm命令。
解决方法
你可以根据自身需求选择以下任意一种方案:
方案1:为zsh添加nvm配置(无需修改默认shell)
- 打开Mac自带终端,先执行
touch ~/.zshrc确保zsh配置文件存在 - 执行
open ~/.zshrc打开配置文件 - 在文件末尾添加如下nvm初始化代码:
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让配置立即生效,之后即可在zsh终端正常使用npm命令
方案2:将Mac默认终端shell设置为bash
- 先执行
which bash确认bash的安装路径,默认输出为/bin/bash - 执行
chsh -s /bin/bash,输入你的Mac用户登录密码完成修改 - 完全退出终端应用后重新打开,默认shell就会切换为bash,可正常使用npm命令
- 后续如果需要切回zsh,执行
chsh -s /bin/zsh即可
内容的提问来源于stack exchange,提问作者Danny
相关产品推荐
相关产品推荐

