python中的env变量的继承

时间:2019-03-05 09:00:57

标签: python python-3.x bash

我需要检索调用python程序的父进程(shell)的环境变量$PS1$PS1不属于python进程内的os.environ,并且sys.ps1存储自己的提示符。

我们如何从外壳程序将此变量传递给程序?

我从外壳中使用python3 program.py调用程序。

2 个答案:

答案 0 :(得分:1)

如果在您的$PS1运行期间分配给program.py的值没有变化,那么最好的选择可能是将其作为参数传递并使用argparse在脚本中检索。如果该值在运行时期间发生变化,则选项之一是将其存储在某个临时文件中并从那里读取。

答案 1 :(得分:1)

python脚本可以通过os.environ访问所有环境变量。您的问题是PS1不是环境变量,而只是外壳程序的 local 变量。

这意味着shell不会将其传递给环境中的子级(您可以通过在shell中键入envprintenv来控制它)。因此,除非在启动Python(对于sh或bash使用export PS1之前手动将其放入环境中),否则无法在Python脚本中获取它。