簡體   English   中英

從shell腳本加載環境變量

[英]Load environment variables from a shell script

我有一個文件,其中包含一些我想在python腳本中使用的環境變量

以下工作形成命令行

$ source myFile.sh
$ python ./myScript.py

從python腳本里面我可以訪問變量之類的

import os
os.getenv('myvariable')

我如何從python腳本中獲取shell腳本,然后訪問變量?

如果你說落后環境傳播,抱歉,你不能。 這是一個安全問題。 但是,python的直接源環境肯定是有效的。 但它或多或少是一個手動過程。

import subprocess as sp

SOURCE = 'your_file_path'
proc = sp.Popen(['bash', '-c', 'source {} && env'.format(SOURCE)], stdout=sp.PIPE)

source_env = {tup[0].strip(): tup[1].strip() for tup in map(lambda s: s.strip().split('=', 1), proc.stdout)}

然后,您在source_env擁有所需的一切。

如果您需要將其寫回本地環境(不推薦使用,因為source_env會讓您保持干凈):

import os

for k, v in source_env.items():
    os.environ[k] = v

這里需要付出另一個微小的關注,因為我在這里調用bash ,你應該期望這里也適用規則。 因此,如果您希望看到變量,則需要導出它們。

export VAR1='see me'
VAR2='but not me'

無法通過bash或shell腳本加載環境變量,它是一種不同的語言。 您將不得不使用bash來評估文件,然后以某種方式打印出變量然后讀取它們。 請參閱強制bash擴展從文件加載的字符串中的變量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM