bash -c nvm 不工作

bash -c nvm 不工作

我已經安裝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 -c因為nvm它是 bash 函數而不是真正的腳本。

答案1

這是為什麼?

當用 呼叫時-c,bash 作為非互動式殼。不讀取預設的互動式 shell 啟動檔 ( /etc/bash.bashrc、 )。~/.bashrc即使您強制~/.bashrc讀取,其主體也可能不會被執行 - 例如,預設的 Ubuntu 主體(在帳戶建立期間從 /etc/skel 複製)包含以下行

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

它繞過了以下所有內容。

可以強制使用互動式 shell bash -ic,但這可能會導致其他問題,具體取決於您的.bashrc.

答案2

嘗試

bash -ic nvm

將 bash 作為互動式 shell 運行提供命令似乎不符合 bash 文檔,但它可以工作。

答案3

我切換到https://www.npmjs.com/package/n在這種情況下效果更好。

它是 bash 腳本的替代方案nvm,並且不需要所有這些腳本。這就是為什麼它也可能在沒有上述問題的情況下工作。

n可以使用以下命令安裝:

npm install -g n

相關內容