Wenn Sie den Schalter '-' hinzufügen, wird das Profil von myuser geladen. Mit anderen Worten, Sie können Profilumgebungsvariablen laden, während sie kopflos sind.
su - myuser -c "cmd_to_execute"
Ich habe einen Server, auf dem Fedora 19 ausgeführt wird. Wenn der Server hochfährt, muss ich eine Reihe von Befehlen ausführen. Ich mache das in einer /etc/rc.d/rc.local
Datei. Das funktioniert gut. Jetzt muss ich meinen nodejs
Server mit diesem Skript starten .
Ich möchte das Serverprogramm nicht als starten root
. Also habe ich so etwas wie das Folgende in der rc.local
Datei ausprobiert .
su myuser -c /home/myuser/project/path/prod_start.sh
Dies führt prod_start.sh
als aus myuser
. Aber in prod_start.sh
, ich ändere das Verzeichnis in das Stammverzeichnis der Anwendung. Es erwartet auch, dass einige Umgebungsvariablen vor der Ausführung gesetzt werden. Da diese Umgebungsvariablen jedoch bash_profile
für Benutzer definiert sind myuser
, wurde keine von ihnen wirksam und das Skript ist fehlgeschlagen.
Ich frage mich, wie ich einen Befehl als anderer Benutzer mit allen für ihn festgelegten Umgebungsvariablen ausführen kann. Soll ich alle diese Umgebungsvariablen auf Systemebene so einstellen, dass sie allen Benutzern zur Verfügung stehen?
Wenn Sie den Schalter '-' hinzufügen, wird das Profil von myuser geladen. Mit anderen Worten, Sie können Profilumgebungsvariablen laden, während sie kopflos sind.
su - myuser -c "cmd_to_execute"