我需要获取子进程的环境。我有一个c-shell脚本(非常复杂),它设置了许多环境变量,我想在父进程中使用它们。我做这样的事情:
subprocess.call(['set_env_vars.csh; env>crazy_vars.log' shell=True])
通过这种方式,我试图获得子进程的环境,但这种方法不起作用,因为我认为分号后的命令被视为单独的进程。
一个可能的解决方案是我创建了另一个c-shell脚本并将这两个命令放在那里,然后在python中调用该脚本,但那是一种肮脏的方式。
有没有办法让两个命令成为同一个过程的一部分。
由于
答案 0 :(得分:2)
在我的系统上(和许多其他人一样)shell是bash,而不是csh,所以显式调用csh是个好主意。此外,您需要来源,而不是执行 set_env_vars.csh :
subprocess.call(['/bin/csh', '-c', 'source set_env_vars.csh; env > crazy_vars.log'])