Comando não encontrado ao executar o script como outro usuário

Comando não encontrado ao executar o script como outro usuário

(Usando um Ubuntu EC2 na AWS)

Eu tenho um roteiro, /home/ubuntu/start.sh. Se eu executá-lo como ubuntu, ele funcionará bem. Preciso que ele seja executado no lançamento, então coloquei-o no /etc/rc.local. Isso será executado como root na reinicialização e falhará. Consigo reproduzir a falha:

# 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

Então parece:

  • root não conhece npm(instalado por ubuntuunder /home/ubuntu/.nvm/versions/node/v4.2.6/bin/npmentão faz sentido)
  • su -c ./start.sh - ubuntunão executa exatamente o script como o Ubuntu

Como posso executar este script exatamente como se estivesse logado como ubuntu?

Responder1

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

Responder2

Edite /etc/rc.local com seu editor de texto favorito.

sudo nano /etc/rc.local

E adicione a linha su ubuntu -c /etc/rc.local/ubuntu/start.sh &(se esse for realmente o caminho para o seu arquivo)

Isso executa /etc/rc.local/ubuntu/start.sh como o usuário ubuntu na inicialização e como um processo em segundo plano.

informação relacionada