インストールして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 関数であり、実際のスクリプトではないbash -c
ため、それをラップしようとしました。nvm
答え1
何故ですか?
で起動すると-c
、bashは非インタラクティブシェル。デフォルトの対話型シェルの起動ファイル(/etc/bash.bashrc
、~/.bashrc
)は読み込まれません。強制的~/.bashrc
に読み込んだとしても、その本体は実行されない可能性があります。たとえば、Ubuntuのデフォルトのファイル(アカウント作成時に/etc/skelからコピー)には、次の行が含まれています。
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
後続のすべてをバイパスします。
あなたできたを使用して対話型シェルを強制しますbash -ic
が、 内の他の内容によっては他の問題が発生する可能性があります.bashrc
。
答え2
試す
bash -ic nvm
対話型シェルとしてbashを実行するそしてコマンドを提供すると、bash のドキュメントに準拠していないように見えますが、動作します。
答え3
私は切り替えましたhttps://www.npmjs.com/package/nこの場合は、その方がはるかに効果的です。
これは bash スクリプトの代替手段でありnvm
、それらすべてを必要としません。そのため、上記の問題もなく動作すると考えられます。
n
次のコマンドでインストールできます。
npm install -g n