【发布时间】:2017-02-16 22:41:08
【问题描述】:
我需要从我的 Python 脚本运行终端并在干净的环境中执行命令,就像我刚刚打开终端模拟器并在那里输入命令一样。但是我的脚本中有一些导出的变量在此终端中不可用。可以有任意数量的变量(其中一些甚至可以使用 bash 'export' 命令在脚本之外设置),所以我不能在运行终端之前手动删除它们。
我尝试了声称重置默认环境的通用解决方案,但它不起作用。代码如下所示:
import subprocess
import os
os.environ['X'] = 'Y'
cmd = 'gnome-terminal -x env -i bash -c "echo $X; bash --noprofile --norc"'
subprocess.Popen([cmd], stdout=subprocess.PIPE, shell=True)
输出仍然打印“Y”。当我尝试只使用终端做同样的事情时,结果是一样的:
$ export X=Y
$ gnome-terminal -x env -i bash -c "echo $X; bash --noprofile --norc"
新终端打开并打印“Y”。
有什么办法可以解决这个问题吗?
【问题讨论】: