Comando no encontrado al ejecutar el script como otro usuario

Comando no encontrado al ejecutar el script como otro usuario

(Usando un Ubuntu EC2 en AWS)

Tengo un guión /home/ubuntu/start.sh. Si lo ejecuto como ubuntu, funciona bien. Necesito que se ejecute en el lanzamiento, así que lo puse en /etc/rc.local. Luego se ejecutará como root al reiniciar y falla. Puedo reproducir el error mediante:

# 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

Entonces se ve así:

  • root no lo sabe npm(instalado por ubuntudebajo /home/ubuntu/.nvm/versions/node/v4.2.6/bin/npmpara que tenga sentido)
  • su -c ./start.sh - ubuntuno ejecuta exactamente el script como ubuntu

¿Cómo puedo ejecutar este script exactamente como si hubiera iniciado sesión como ubuntu?

Respuesta1

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

Respuesta2

Edite /etc/rc.local con su editor de texto favorito.

sudo nano /etc/rc.local

Y agregue la línea su ubuntu -c /etc/rc.local/ubuntu/start.sh &(si esa es realmente la ruta a su archivo)

Esto ejecuta /etc/rc.local/ubuntu/start.sh como el usuario ubuntu al inicio y como proceso en segundo plano.

información relacionada