que tiene una secuencia de comandos que se ve algo como esto:Emulating Bash 'fuente' en Python
export foo=/tmp/foo
export bar=/tmp/bar
Cada vez que construyo corro 'init_env fuente' (donde init_env es el script de arriba) para establecer algunas variables .
Para lograr lo mismo en Python tenía este código que se ejecuta,
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)
Pero entonces alguien decidió que sería bueno añadir una línea como la siguiente en el archivo init_env
:
export PATH="/foo/bar:/bar/foo:$PATH"
Obviamente, mi script de Python se vino abajo. Podría modificar la secuencia de comandos de Python para manejar esta línea, pero luego se romperá más tarde cuando alguien se le ocurra una nueva característica para usar en el archivo init_env
.
La pregunta es si hay una manera fácil de ejecutar un comando Bash y dejar que modifique mi os.environ
?
relacionado: [Llamar al comando "origen" del subproceso.Popen] (http://stackoverflow.com/q/7040592/4279) – jfs