Befehl beim Ausführen des Skripts als anderer Benutzer nicht gefunden

Befehl beim Ausführen des Skripts als anderer Benutzer nicht gefunden

(Verwendung eines Ubuntu EC2 auf AWS)

Ich habe ein Skript, /home/ubuntu/start.sh. Wenn ich es als ausführe ubuntu, läuft es einwandfrei. Ich muss es beim Start ausführen, also füge ich es in ein /etc/rc.local. Beim Neustart wird es dann als Root ausgeführt, und das schlägt fehl. Ich kann den Fehler folgendermaßen reproduzieren:

# 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

Es sieht also so aus:

  • root weiß nichts davon (von under npminstalliert, also macht das Sinn)ubuntu/home/ubuntu/.nvm/versions/node/v4.2.6/bin/npm
  • su -c ./start.sh - ubuntuführt das Skript nicht genau als Ubuntu aus

Wie kann ich dieses Skript genau so ausführen, als wäre ich als angemeldet ubuntu?

Antwort1

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

Antwort2

Bearbeiten Sie /etc/rc.local mit Ihrem bevorzugten Texteditor.

sudo nano /etc/rc.local

Und fügen Sie die Zeile hinzu su ubuntu -c /etc/rc.local/ubuntu/start.sh &(wenn das tatsächlich der Pfad zu Ihrer Datei ist)

Dadurch wird /etc/rc.local/ubuntu/start.sh beim Start als Benutzer Ubuntu und als Hintergrundprozess ausgeführt.

verwandte Informationen