【发布时间】:2018-03-24 14:49:37
【问题描述】:
我尝试从 python 执行 csh 脚本(创建或更新环境变量),但返回 shell 后环境变量不会更新。 为什么 ?我该如何解决?
subprocess.call('script.csh',shell=True,executable="/bin/csh")
【问题讨论】:
-
这不是 Python 问题。父进程不会从子进程继承。你甚至不能用 shell 脚本来做,除非你
source脚本。 -
我使用 tcsh。你的意思是 ?你能给我解决方法吗? @PM 2Ring
-
解决方法是让 shell 脚本设置环境变量,然后执行您的 Python 脚本,而不是您现在尝试执行的方式。或者,您可以使用
os.environ在 Python 中设置它们。 -
对不起,我不明白你的建议。我从 python @kindall 执行 csh 脚本
-
他说你不能调用子进程来做你正在做的事情。它必须是直接进程,因为您的环境变量可以传递给子进程,但子进程环境变量不会传递回父进程。例如,假设您有一个名为
parent_process的进程,其环境变量为"TEST"="MyTest",然后您生成名为child_process的子进程,并在检查TESTenv-var 时将TEST覆盖为"TEST"="YourTest"回到你的 parent_process,它仍然是"TEST"="MyTest"。
标签: python python-3.x shell unix csh