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

これは非常に奇妙です。「どの nvm」が空のときに、システムが nvm プログラムを見つけることができるのでしょうか?!

さらに重要なことは、cron プログラムが起動時に NVM を見つけられるようにするにはどうすればよいでしょうか?

4

1 に答える 1

17

コマンドはnvmファイルではなく、シェル関数です。

source ~/.nvm/nvm.sh、これらの関数を現在のシェルに追加します。また、これらのコマンドはファイルではないため、which nvm.

ファイルを見ると、.nvm/nvm.shその機能を提供する nvm() {...} 関数が定義されていることがわかります。

Cron は別のユーザーとして使用している可能性が高く、そのユーザーはsource ~/.nvm/nvm.sh実行前にシェル コンテキストに追加する必要があります。

于 2014-11-08T18:52:39.263 に答える