这个话题有很多问题但不幸的是他们并没有解决我的问题。
我有一个shell脚本,其目的只是设置环境变量(让我们称之为env.sh
)。第二个shell脚本是源程序脚本env.sh
,它使用在那里定义的变量。当两者都是bash脚本时,这样可以正常工作。
我遇到的问题是我尝试用python程序替换主shell脚本。这个python程序还依赖于env.sh
设置的那些环境变量。
在启动任何使用这些环境变量的例程之前,如何在python中获取env.sh
?
我必须使用模块子进程运行bash -c source env.sh
。但是,如果我理解正确,这不起作用,因为变量是在调用python程序的子进程中设置的,因此在父进程中不可用。这是对的吗?
类似的解决方案是使用bash -c source env.sh && env
并在python中读取env
的输出,遍历列表并写入os.environ
。但是这种方法会再次写入每个变量,即使它已经被定义了。如果有很多变量怎么办?
我能想到的最后一个解决方案是读取并解析env.sh
文件并设置我能找到的变量。一个问题是env.sh
中的某些导出是嵌套的,修改:
export SOMETHING=$FOO/Bar
正确解析可能会变得很复杂。
还有其他方式我还没有发现或没有想到吗?
答案 0 :(得分:0)
一些选项:
Env变量采购很常见,我不建议你自己动手。