我已经安装nvm
并附加到我的/home/www-data/.bashrc
调用nvm
工作。
bash
nvm
作品
但
$ bash -c nvm
bash: nvm: command not found
不起作用。
当我指定 rcfile 时也一样
$ bash --rcfile /home/www-data/.bashrc -c "nvm"
bash: nvm: command not found
这是为什么?
最后,我想在 RoboFile exec() 命令中使用 nvm 并尝试将其包装进去bash -c
,因为它nvm
是一个 bash 函数而不是一个真正的脚本。
使用 调用时
-c
,bash 作为非交互式shell 运行。不读取默认的交互式 shell 启动文件 (/etc/bash.bashrc
, )。~/.bashrc
即使您强制~/.bashrc
阅读,它的正文也可能不会执行 - 例如,默认的 Ubuntu 正文(在帐户创建期间从 /etc/skel 复制)包括以下行它绕过了接下来的一切。
您可以强制使用交互式 shell
bash -ic
,但这可能会导致其他问题,具体取决于.bashrc
.尝试
将 bash 作为交互式 shell 运行并提供命令似乎不符合 bash 文档,但它可以工作。
我切换到https://www.npmjs.com/package/n在这种情况下效果更好。
它是一种替代方案,
nvm
并且不需要所有那些 bash 脚本。这就是为什么它可能也可以在没有上述问题的情况下工作。