我已经安装了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函数,而不是真正的脚本。
发布于 2022-09-19 11:57:13
为什么会这样呢?
当使用-c调用时,bash作为一个非交互式shell运行。不读取默认的交互式shell启动文件(/etc/bash.bashrc、~/.bashrc)。即使您强制读取~/.bashrc,它的正文也可能不会执行--例如,默认的Ubuntu (在创建帐户期间复制自/etc/skel )包括行
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac它绕过了所有的跟随。
您可以使用bash -ic强制使用交互式shell,但这可能会导致其他问题,这取决于.bashrc中的其他内容。
发布于 2022-09-19 11:58:35
试一试
bash -ic nvm将bash作为交互式shell 和运行,提供命令似乎不符合bash文档,但它有效。
发布于 2022-09-19 11:52:17
我改用了https://www.npmjs.com/package/n,在这种情况下,它的工作效果要好得多。
它是nvm的另一种选择,不需要所有那些bash脚本。这就是为什么它可能在没有上述问题的情况下起作用的原因。
可以使用以下命令安装n:
npm install -g nhttps://askubuntu.com/questions/1430145
复制相似问题