在shell脚本中(.sh)执行nvm命令报错:nvm: command not found

作者
2025-07-15阅读 35

1、问题描述

我正常安装了nvm,也在.bashrc文件中添加了配置,相关的命令和ndoe下载一切正常。也就是安装使用没有问题

由于我是做自动打包的脚本,所以需要在sh文件中执行

我直接写的是

echo "切换nodejs 21"
#nvm -v
nvm use 22

但是实际运行sh脚本的时候报错:line 23: nvm: command not found

2、原因

因为 nvm 是 shell 函数,它依赖于你的 shell 配置文件(如 .bashrc, .zshrc)加载。而大多数脚本默认不会加载这些配置文件。

所以虽然你在交互式终端里能看到 v21,但在脚本中由于没有加载 nvm.sh,它无法识别你是否安装过这个版本。

3、解决方式

在脚本中显式加载 nvm.sh,这里就可以参照安装nvm的时候在.bashrc中添加到配置。这里只是将这个配置在sh文件中显式的再执行一遍。

例如,我这边的脚本改成了

#为了在sh脚本中使用nvm,需要加载
export NVM_DIR="/data/buildtool/nvm/nvm-0.40.3"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

echo "切换nodejs 21"
#nvm -v
nvm use 22



全部评论

头像
乌兔
前端开发
私信
获得点赞 445
文章被阅读 31,261