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

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

(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

つまり次のようになります:

  • root は知らない( undernpmによってインストールされたので意味がある)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 を実行します。

関連情報