"哪个nvm"消失了

Ere*_*evi 12 ubuntu cron path nvm

我在ubuntu机器上安装了NVM,但是,当我把它放在crontab中以便在重启期间执行时:

@reboot nvm use 0; 
Run Code Online (Sandbox Code Playgroud)

它不起作用,我收到了来自cron守护进程的邮件,说:

/bin/sh: 1: nvm: not found
Run Code Online (Sandbox Code Playgroud)

所以,我认为这是一个路径问题,并试图找到NVM的安装位置.令我惊讶的是,我得到了空洞的结果:

root@vps-1145280-18735:~# which nvm
root@vps-1145280-18735:~# 
Run Code Online (Sandbox Code Playgroud)

但是,即使重启后,NVM本身也能正常工作:

root@vps-1145280-18735:~# nvm

Node Version Manager
...
Run Code Online (Sandbox Code Playgroud)

这很奇怪 - 当"哪个nvm"为空时系统如何找到nvm程序?

而且,更重要的是 - 为了让cron程序在启动期间找到NVM,我该怎么做?

Mik*_*lan 12

nvm命令不是文件,而是shell函数.

source ~/.nvm/nvm.sh您当前的外壳增加了这些功能.并且因为这些命令不是文件,所以当您执行时它们不会显示which nvm.

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

Cron可能使用不同的用户,并且该用户需要source ~/.nvm/nvm.sh在运行之前添加到其shell上下文中.