“which nvm”已经消失。

24
我在Ubuntu机器上安装了NVM,但是当我将它放进crontab中,在重新启动时执行:
@reboot nvm use 0; 

它没有起作用,我收到了cron守护程序的邮件,内容如下:

/bin/sh: 1: nvm: not found

所以我认为这是一个路径问题,并试图找到NVM安装的位置。令我惊讶的是,我没有得到任何结果:

root@vps-1145280-18735:~# which nvm
root@vps-1145280-18735:~# 

但是,即使在重新启动后,NVM本身仍然能够正常工作:

root@vps-1145280-18735:~# nvm

Node Version Manager
...

这太奇怪了——系统如何找到nvm程序,当"which nvm"为空时?!

而且,更重要的是——我应该怎么做才能让cron在启动时找到NVM?


这个回答解决了你的问题吗,Erel? - Mike Biglan MS
这是重复的问题:https://dev59.com/LHrZa4cB1Zd3GeqP8uoh和https://dev59.com/Q2Af5IYBdhLWcg3wey3Z。 - Tyler
1个回答

23

nvm 命令不是一个文件,而是一个 shell 函数。

source ~/.nvm/nvm.sh 命令将这些函数添加到当前 shell 中。因为这些命令不是文件,所以当你输入 which nvm 时,它们不会显示。

.nvm/nvm.sh 文件中查看,可以看到定义了一个 nvm() {...} 函数,提供了该功能。

Cron 可能使用不同的用户,而该用户需要在运行之前将 source ~/.nvm/nvm.sh 添加到其 shell 环境中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接