设置环境变量,以便可以在程序外部读取

时间:2014-01-08 16:55:05

标签: python linux

这是我的剧本:

try:
    os.environ['CONSOLE'] = '1'
    while True:
        ...
except KeyboardInterrupt:
    del os.environ['CONSOLE']

我正在尝试设置一个名为CONSOLE的环境变量。当这个程序运行时,该变量应该存在,一旦我用Ctrl + C退出它,它就会消失。

当我让程序继续运行并尝试从我的shell打印时,我得到:

$ echo $CONSOLE
CONSOLE: Undefined variable.

我似乎无法从我的PHP脚本中读取它。我的变量在哪里?我以为os.environ应该允许我这样做?

1 个答案:

答案 0 :(得分:5)

shell是如何工作的,每个新进程都是fork/exec'd,所以你的Python脚本是running in a separate process来自启动它的shell。

通过任何方式设置环境变量都不会更改它启动的shell中的变量,因为脚本的环境和原始shell的环境是不同的。

正如你在这里看到的,它不会在脚本之后迷失,但即使python仍在运行(bash 4.2,python 3.3)

>>> import os
>>> os.environ['CONSOLE'] = '1'
>>> 
[1]+  Stopped                 python3.3
$ echo $CONSOLE

$ fg
python3.3

>>> os.environ['CONSOLE']
'1'

如果您正在尝试在PHP和Python脚本之间有效地获取命名共享内存,则可以像文件一样use a FIFO和读/写,或通过套接字进行通信。