Команда не найдена при запуске скрипта от имени другого пользователя

Команда не найдена при запуске скрипта от имени другого пользователя

(Использование Ubuntu EC2 на AWS)

У меня есть скрипт, /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 не знает об этом npm(установлено пользователем ubuntuunder, /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 &(если это действительно путь к вашему файлу)

Это запускает /etc/rc.local/ubuntu/start.sh от имени пользователя ubuntu при запуске и в качестве фонового процесса.

Связанный контент