Linux

當我以使用者身份登錄 vs su 以使用者身份登錄時,命令顯示不同的結果

  • December 11, 2014

我正在嘗試從 init.d 腳本執行一個簡單的命令,並且我正在排除為什麼當我從我的 init.d 腳本執行該命令時該命令不起作用但當我以我的使用者身份執行它時起作用。

有人可以解釋為什麼當我nvm --version以登錄使用者身份執行時它顯示一個值,但是當我su對我的使用者它不知道是什麼時nvm?我相信這最終是我的 init.d 腳本無法正常工作的根本原因。

$ whoami
someuser
someuser@node-server1:/var/www/dev$ nvm --version
0.18.0
someuser@node-server1:/var/www/dev$ su - someuser -c "nvm --version"
Password: 
-su: nvm: command not found

我在我的 .bashrc 中註意到了這一點:

export NVM_DIR="/home/someuser/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

我是否需要以某種方式在我的 init.d 腳本中或當我su向使用者執行此命令時?

從 NVM 文件中:

要啟動 nvm,您需要從 shell 中獲取它: source ~/.nvm/nvm.sh

所以,是的,為了能夠使用 nvm,您必須在呼叫它之前先“啟動”它。

這是因為“someuser”使用者$PATH沒有nvm二進製文件所在的路徑。為了能夠使用該命令nvm,您需要將nvm二進製文件的位置添加到該使用者的路徑中。

做這個:

以目前可用命令which nvm的使用者身份執行。nvm如果將顯示nvm命令所在的位置。例如,如果which nvm給你/usr/local/nvm/bin/nvm,那麼你必須添加/usr/local/nvm/binnvm目前不可用的使用者路徑。為此,在新使用者的 .bashrc 中添加以下行。

export PATH=$PATH:/usr/local/nvm/bin

完成後,註銷、重新登錄或source.bashrc 文件,nvm新使用者即可使用該命令。

例如:如果使用者 ‘abc’ 沒有可用的 nvm,則將該export PATH...行添加到 /home/abc/.bashrc

引用自:https://serverfault.com/questions/650747