我正在运行用Python编写的测试工具。在通过此测试工具运行测试之前,我通过shell脚本导出一些环境变量,该脚本在导出变量后调用测试工具。当线束进入图片时,它会检查变量是否在环境中,并根据env变量中的值进行操作。
然而,在执行测试之后,我认为环境变量值在下次没有被清除,即使没有通过shell脚本设置,它也会获取这些值。
如果明确设置了它们,线束将获取新值,但如果我们下次清除它,它会再次获取第一次运行中设置的值。
我尝试使用" del os.environ [' var']"清除变量。每次测试执行后都会执行命令,但这并没有解决问题。有人知道为什么要保留这些值吗?
在shell上,这些变量未按照“env”中的设置进行设置。 unix命令。它只是在测试工具中显示值。没有任何env变量将它们的值存储在任何文本文件中。
答案 0 :(得分:1)
子shell可以更改从父级继承的变量,但子级所做的更改不会影响父级。
启动新的子shell时,从父级导出的变量是可见的。该变量未被del os.environ['var']
取消设置,但父变量中该变量的值保持不变。
答案 1 :(得分:1)
python进程不会影响启动它的父shell进程的环境。如果你有一个父shell,它的环境将持续存在,除非/直到shell本身改变它。
但是,bash脚本只能为子脚本设置环境变量,如下所示:
export OPTIONS=parent
OPTIONS=child python child.py
echo $OPTIONS
这将回显“parent”,而不是“child”,但python进程将看到OPTIONS=child
。你没有非常清楚地描述你的设置,但这可能会有所帮助吗?