以其他用户身份运行脚本时找不到命令

以其他用户身份运行脚本时找不到命令

(在 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 并作为后台进程。

相关内容