簡體   English   中英

如何使用Python在當前shell中設置環境變量?

[英]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.

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