Ich habe einen Dienst, der beim Booten ausgeführt wird, und in diesem Dienst wird im Hintergrund ein Bash-Skript aufgerufen, das einige Umgebungsvariablen exportiert. Das Problem, das ich habe, ist, dass diese Umgebungsvariablen nicht an das übergeordnete Element des Hintergrundprozesses gesendet werden. Sobald mein Skript ausgeführt ist, sind sie verschwunden.
Darüber hinaus ruft der Dienst nach Ausführung des Skripts ein anderes Skript auf, mit dem eine von mir verwendete Anwendung gestartet wird. Diese Anwendung benötigt Zugriff auf diese Umgebungsvariablen.
Das RHEL-System, auf dem ich es ausführe, soll niemals vom Benutzer angemeldet werden. Es bootet nur und startet die Anwendung. Ich weiß, dass Umgebungsvariablen für einen übergeordneten Prozess / eine übergeordnete Shell nicht wirklich von einer untergeordneten Hintergrundprozess-Shell festgelegt werden können.
Ich brauche eine Möglichkeit, dies durch ein Skript zu tun, das von meinem Dienst aufgerufen wird (allerdings nicht unbedingt im Hintergrund), nicht indem ich sie meinem Dienst hinzufüge (was auch für mich nicht funktionierte) und nicht indem ich sie in einem /etc/environment
oder speichere .profile
oder so etwas.
In meinem Dienst habe ich versucht, die Umgebungsvariablen hinzuzufügen (was ich aber nicht tun möchte):
export TEST=192.168.1.1
Das habe ich auch in meinem Dienst versucht:
TEST=192.168.1.1
export TEST=${TEST}
Ich habe versucht zu ändern, wie mein Dienst das Bash-Skript aufruft:
/bin/asdf/script &
Ich habe auch versucht, das Skript so zu beschaffen, dass es in derselben Shell ausgeführt wird (die ich daraus erhalten habe ):
. ./bin/asdf/script
#I'm very confused why this didn't work
Ich fand auch diese , die interessant aussahen , aber es nicht wirklich in meinem Fall pan out.
quelle
Es gibt keine Möglichkeit, dass ein Prozess die Umgebung eines anderen vorhandenen Prozesses beeinflusst. Prozesse beeinflussen nur die Umgebung ihrer untergeordneten Prozesse.
Sie müssen diese Umgebungsvariablen also in einem Vorgänger der Anwendung festlegen, die sie benötigt. Anstatt dass Ihr Service das Bash-Skript für die Umgebungseinstellung und die Anwendung separat aufruft, rufen Sie von Ihrem Service ein Bash-Skript auf, das die Umgebungsvariablen festlegt, und starten Sie dann die Anwendung.
quelle