2016-08-03 9 views
0

Ich versuche, ein Linux-Umgebungsvariable mit einem Bash-Skript zu aktualisieren, geladen von einem Python-SkriptLinux-Umgebung vars hinzugefügt permanent mit Python

1.- ich es löschen:

del os.environ['USER'] 

2.- Ich lief das Bash-Skript mit Befehlen lib:

status, output = commands.getstatusoutput('. ' + PATH +'/script.sh') 

2.1.- Status = 0; output = 'Umwelt var aktualisiert'

Also .. bis hier scheint alles ok

3.- funktioniert aber, wenn ich versuche zu testen, dass die var alredy aktualisiert:

print os.environ['USER'] 

I Erhalten Sie die folgende Ausgabe:

KeyError: 'USER' 

Antwort

1

os.environ ist nicht Ihre Umgebung, sondern eine Darstellung davon, erstellt, wenn das os Modul zum ersten Mal importiert wird. Laut the documentation spiegeln einige Plattformen Änderungen an os.environ in der Umgebung des Prozesses wider. Da Sie einen Subprozess ausführen, um die Umgebung zu ändern, werden diese Änderungen an dem -Unterprozess vorgenommen, nicht an dem Prozess, in dem Ihr Python-Code ausgeführt wird.

Es gibt keine Möglichkeit, Änderungen an der Umgebung eines Prozesses vorzunehmen, die sich in der Umgebung des übergeordneten Prozesses widerspiegeln.

1

Die Umgebung wird von einem Kindprozess von seiner übergeordneten geerbt; Genauer gesagt, ein Parent-Prozess erstellt eine Umgebung für untergeordnete Prozesse und standardmäßig ist dies derselbe wie der Parent-Prozess.

Es ist keinem Prozess möglich, die Umgebung eines anderen vorhandenen Prozesses zu ändern.