python中环境变量的继承
我需要检索调用python程序的父进程(shell)的env变量python中环境变量的继承,python,python-3.x,bash,Python,Python 3.x,Bash,我需要检索调用python程序的父进程(shell)的env变量$PS1$PS1不属于python进程内部的os.environ,并且sys.PS1存储自己的提示符 我们如何将这个变量从shell传递给程序 我使用shell中的:python3 program.py调用该程序。如果分配给$PS1的值在程序.py的运行期间没有更改,那么最好的选择可能是将其作为参数传递,并使用脚本检索它。如果该值在运行时发生更改,则其中一个选项是将其存储在某个临时文件中并从中读取 python脚本可以通过os.en
$PS1
$PS1
不属于python进程内部的os.environ
,并且sys.PS1
存储自己的提示符
我们如何将这个变量从shell传递给程序
我使用shell中的:
python3 program.py
调用该程序。如果分配给$PS1
的值在程序.py
的运行期间没有更改,那么最好的选择可能是将其作为参数传递,并使用脚本检索它。如果该值在运行时发生更改,则其中一个选项是将其存储在某个临时文件中并从中读取 python脚本可以通过os.environ
访问所有环境变量。您的问题是,PS1
不是环境变量,而是shell的局部变量
这意味着shell不会将其传递给环境中的子级(您可以通过在shell中键入
env
或printenv
来控制)。因此,除非在启动Python之前手动将其放入环境中(export PS1
for sh或bash),否则无法在Python脚本中获得它。只有交互式shell知道$PS1
的值。演示您如何从shell调用python脚本OK,我编辑了我的答案,我从中调用python程序的shell知道$PS1
您是否尝试了python3-I program.py
?我无法访问shell的$PS1
。如果我在shell上的提示符是prompt$
,并且我调用了python3 program.py
,我想在python程序内部获得$PS1
=prompt$
shell的一个局部变量,同意。但并非所有启动的Shell都对PS1可见,只有交互式ones@Inian:FreeBSD上的my Posix shell具有本地PS1,无论是否以交互方式启动。我知道你可以使用env MYVAR=value child\u cmd
将局部变量传递给孩子,但是printenv
如何将局部变量传递给孩子呢?