python - 设置环境变量,使其可以在我的程序之外读取

标签 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 应该允许我这样做?

最佳答案

这是 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并像读取文件一样读/写,或通过套接字进行通信。

关于python - 设置环境变量,使其可以在我的程序之外读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21001791/

相关文章:

linux - 包含文件存储在哪里 - Ubuntu Linux,GCC

读取部分可用数据时Linux tty翻转缓冲区锁定

c - 预链接的过程是怎样的?动态加载器是如何解决这些问题的?

python - 从 skimage 轮廓创建蒙版

python - 如何修改 GET 的反向 url?

python - 为什么我的 AWS SQS 消息没有被删除?

python - 如何构建和安装hcluster?

python - 如何在未知长度的计数器列表中使用并集和交集?

linux - Linux下可视化内存调试应用?

linux - Ubuntu apt-get 找不到任何版本的 gcc 和 g++