虽然在python中有很多关于访问/设置环境变量的问题,但我找不到适合我的特定情况的答案。
我有一个shell脚本,当调用它时,它会导出一堆env变量,这些变量将在以后使用。
如果您需要当前会话中的这些变量可用,那么您就可以这样做
. ./script_exp_var.sh
可以,
export MYVAR = MYVAL
然后,如果您运行python,则可以使用os.environ.get('MYVAR')
访问它。
我的问题是如何从python调用脚本,然后必须访问调用刚刚导出的脚本的env变量。可能吗?如果可以,怎么办?
注意:我知道我可以使用os.environ["MYVAR"] = MYVAL
从python设置env var,但是我想在我的./script_exp_var.sh
中使用现有的逻辑,因为它会导出许多变量。
另外,对于我的情况,也不要确保先执行脚本然后执行python。
答案 0 :(得分:1)
不能。环境变量是从父级复制到子级的,永远不会复制回父级。
如果您从python执行shell脚本,则将在该shell进程(子进程)中设置环境变量,而python将不会意识到这些变量。
您可以编写一个解析器,以从python读取shell命令,但这需要大量工作。
最好编写一个带有其中设置的shell脚本,然后将python程序作为该脚本的子代来调用。
或者,编写一个shell脚本,将这些值回显到python,可以使用管道将其拾取。