[英]How to set a environment variable in the current shell with Python?
我想使用Python腳本設置環境變量,從而影響啟動腳本的外殼。這就是我的意思。
python -c "import os;os.system('export TESTW=1')"
但是命令
echo ${TESTW}
什么也不返回。 也有表達
python -c "import os;os.environ['TEST']='1'"
這是行不通的。
是否有另一種直接方式做到這一點? 還是將變量寫入我從Python腳本的“外部”執行的文件中更好?
您可以通過以下方式影響環境: putenv但它不會影響呼叫者環境,而只會影響分叉孩子的環境。 在啟動python腳本之前設置環境確實要好得多。
我可以提出這樣的變體。 您創建一個bash腳本和一個python腳本。 在bash腳本中,您可以使用params調用python腳本。 一種參數-一種環境變量。 例如:
#!/bin/bash
export TESTV1=$(python you_program.py testv1)
export TESTV2=$(python you_program.py testv2)
而you_program.py testv1
返回一個env變量的值。
我強烈建議使用chepner和Maxym提出的解決方案(其中Python腳本提供值,而您的shell導出變量)。 如果那不是您的選擇,您仍然可以使用eval
執行python腳本在當前Bash進程中編寫的內容:
eval $( python -c "print('export TESTW=1')" )
注意: eval
通常在Bash編程中讀為“ evil”。 作為一般經驗法則,應避免“盲目”執行未完全控制的代碼。 在這種情況下,這包括在運行時由另一個程序生成。 另請參閱堆棧溢出問題為什么在Bash中應避免使用eval,而應使用什么呢? 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.