以其他使用者身分執行腳本時找不到命令

以其他使用者身分執行腳本時找不到命令

(在 AWS 上使用 Ubuntu EC2)

我有一個腳本,/home/ubuntu/start.sh.如果我運行它ubuntu,它運行良好。我需要它在啟動時運行,所以我把它放在/etc/rc.local.然後,這將在重新啟動時以 root 身份運行,但會失敗。我可以透過以下方式重現失敗:

# I'm ubuntu
$ whoami
ubuntu
$ sudo su
# i'm now root
$ whoami
root
$ ./start.sh
./start.sh: line 9: npm: command not found
$ su -c ./start.sh - ubuntu
./start.sh: line 9: npm: command not found

所以它看起來像:

  • root 不知道(由undernpm安裝,這樣才有意義)ubuntu/home/ubuntu/.nvm/versions/node/v4.2.6/bin/npm
  • su -c ./start.sh - ubuntu並不完全像 ubuntu 那樣運行腳本

如何運行此腳本就像我登入一樣ubuntu

答案1

PATH=$PATH:/node/v4.2.6/bin/ ./start.sh

答案2

使用您喜歡的文字編輯器編輯 /etc/rc.local。

sudo nano /etc/rc.local

並添加該行su ubuntu -c /etc/rc.local/ubuntu/start.sh &(如果這確實是您的文件的路徑)

這將在啟動時以使用者 ubuntu 身分執行 /etc/rc.local/ubuntu/start.sh 並作為後台程序。

相關內容