Linux
當我以使用者身份登錄 vs su 以使用者身份登錄時,命令顯示不同的結果
我正在嘗試從 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/bin
到nvm
目前不可用的使用者路徑。為此,在新使用者的 .bashrc 中添加以下行。
export PATH=$PATH:/usr/local/nvm/bin
完成後,註銷、重新登錄或
source
.bashrc 文件,nvm
新使用者即可使用該命令。例如:如果使用者 ‘abc’ 沒有可用的 nvm,則將該
export PATH...
行添加到 /home/abc/.bashrc