他のユーザーとしてスクリプトを実行すると、コマンドが見つかりません。

他のユーザーとしてスクリプトを実行すると、コマンドが見つかりません。

(AWS で Ubuntu EC2 を使用)

スクリプトがあります/home/ubuntu/start.sh。実行するとubuntu正常に実行されます。起動時に実行する必要があるので、に入れました/etc/rc.local。これは再起動時にルートとして実行されますが、失敗します。以下を使用して失敗を再現できます。

# 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

だからそれは次のようになります:

  • ルートはわかりません(npmunderによってインストールされているので意味があります)ubuntu/home/ubuntu/.nvm/versions/node/v4.2.6/bin/npm
  • su -c ./start.sh - ubuntuUbuntuでスクリプトを実行するのとまったく同じではありません。

ログインしたように、このスクリプトをどのように実行しますか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が実行されます。

関連情報