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

1

(usando um Ubuntu EC2 no AWS)

Eu tenho um script, /home/ubuntu/start.sh . Se eu o executar como ubuntu , ele funcionará bem. Eu preciso que ele seja executado no lançamento, então eu coloquei em /etc/rc.local . Isso será executado como root na reinicialização e isso falhará. Eu sou capaz de reproduzir a falha por:

# 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 que:

  • root não sabe sobre npm (instalado por ubuntu em /home/ubuntu/.nvm/versions/node/v4.2.6/bin/npm , então isso faz sentido)
  • su -c ./start.sh - ubuntu não executa exatamente o script como o ubuntu

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

    
por Guig 05.11.2016 / 00:05

2 respostas

0

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

    
por 05.11.2016 / 00:09
0

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

sudo nano /etc/rc.local

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

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

    
por 05.11.2016 / 00:23