Ich habe ein Skript, das ungefähr so aussieht:Emulating Bash ‚Quelle‘ in Python
export foo=/tmp/foo
export bar=/tmp/bar
Jedes Mal, wenn ich baue ich ‚source init_env‘ laufen (wo init_env das obige Skript ist) einige Variablen einzurichten .
Um das gleiche in Python zu bewerkstelligen ich diesen Code hatte ausgeführt,
reg = re.compile('export (?P<name>\w+)(\=(?P<value>.+))*')
for line in open(file):
m = reg.match(line)
if m:
name = m.group('name')
value = ''
if m.group('value'):
value = m.group('value')
os.putenv(name, value)
Aber dann jemand entschieden, wäre schön, eine Zeile wie die folgende in die init_env
Datei hinzuzufügen:
export PATH="/foo/bar:/bar/foo:$PATH"
Offensichtlich fiel mein Python-Skript auseinander. Ich könnte das Python-Skript ändern, um mit dieser Zeile umzugehen, aber dann bricht es später, wenn jemand mit einer neuen Funktion kommt, um in der init_env
Datei zu verwenden.
Die Frage ist, ob es eine einfache Möglichkeit gibt, einen Bash-Befehl auszuführen und lassen Sie es meine os.environ
ändern?
verwandt: [Aufrufen des "source" -Befehls aus subprocess.Popen] (http://stackoverflow.com/q/7040592/4279) – jfs