在python中设置环境变量
这个话题有很多问题,但不幸的是他们没有解决我的问题 我有一个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中的某些导出是嵌套的,这会导致:在python中设置环境变量,python,linux,bash,Python,Linux,Bash,这个话题有很多问题,但不幸的是他们没有解决我的问题 我有一个shell脚本,它的目的只是设置环境变量,我们称它为env.sh。第二个shell脚本是源env.sh的主程序脚本,它使用在其中定义的变量。当这两个脚本都是bash脚本时,这种方法可以很好地工作 我的问题是,我试图用python程序替换主shell脚本。这个python程序也依赖于由env.sh设置的环境变量 在启动任何使用这些环境变量的例程之前,我可以在python中对env.sh的源代码做些什么 我必须使用模块子流程运行bash-c
export SOMETHING=$FOO/Bar
正确解析可能会变得复杂
有没有其他我还没有找到或没有想到的方法 一些选项:
Env变量寻源非常常见,我不建议您自己使用。python中的source Env.sh-问题就在这里。为什么不在环境变量已经设置好的情况下执行python脚本呢?我认为如果没有定义所需的环境变量,这将是一种不退出程序的安全措施。相反,我从文件中读取它们,并在继续程序之前自己设置它们。在shell脚本中就是这样做的。不要直接调用python脚本,使用包装器。