如何在Python中获取子进程的环境

时间:2015-08-12 20:33:39

标签: python shell

我需要获取子进程的环境。我有一个c-shell脚本(非常复杂),它设置了许多环境变量,我想在父进程中使用它们。我做这样的事情:

subprocess.call(['set_env_vars.csh;    env>crazy_vars.log' shell=True])

通过这种方式,我试图获得子进程的环境,但这种方法不起作用,因为我认为分号后的命令被视为单独的进程。

一个可能的解决方案是我创建了另一个c-shell脚本并将这两个命令放在那里,然后在python中调用该脚本,但那是一种肮脏的方式。

有没有办法让两个命令成为同一个过程的一部分。

由于

1 个答案:

答案 0 :(得分:2)

在我的系统上(和许多其他人一样)shell是bash,而不是csh,所以显式调用csh是个好主意。此外,您需要来源,而不是执行 set_env_vars.csh

subprocess.call(['/bin/csh', '-c', 'source set_env_vars.csh; env > crazy_vars.log'])