我需要检索调用python程序的父进程(shell)的环境变量$PS1
。 $PS1
不属于python进程内的os.environ
,并且sys.ps1
存储自己的提示符。
我们如何从外壳程序将此变量传递给程序?
我从外壳中使用python3 program.py
调用程序。
答案 0 :(得分:1)
如果在您的$PS1
运行期间分配给program.py
的值没有变化,那么最好的选择可能是将其作为参数传递并使用argparse在脚本中检索。如果该值在运行时期间发生变化,则选项之一是将其存储在某个临时文件中并从那里读取。
答案 1 :(得分:1)
python脚本可以通过os.environ
访问所有环境变量。您的问题是PS1
不是环境变量,而只是外壳程序的 local 变量。
这意味着shell不会将其传递给环境中的子级(您可以通过在shell中键入env
或printenv
来控制它)。因此,除非在启动Python(对于sh或bash使用export PS1
之前手动将其放入环境中),否则无法在Python脚本中获取它。