Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中环境变量的继承_Python_Python 3.x_Bash - Fatal编程技术网

python中环境变量的继承

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

我需要检索调用python程序的父进程(shell)的env变量
$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
如何将局部变量传递给孩子呢?