18

我在 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
...

这很奇怪——当“which nvm”为空时,系统怎么会找到nvm程序?!

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

4

1 回答 1

17

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

source ~/.nvm/nvm.sh这些函数添加到您当前的 shell。并且因为这些命令不是文件,所以当你which nvm.

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

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

于 2014-11-08T18:52:39.263 回答