2016-03-03 275 views
1

我試圖從python中修改父shell的環境變量。我到目前爲止嘗試過的方法並沒有奏效:在python中設置父shell的環境變量

~ $ export TESTING=test 
~ $ echo $TESTING 
test 
~ $ 
~ $ 
~ $ python 
Python 2.7.10 (default, Jun 1 2015, 18:05:38) 
[GCC 4.9.2] on cygwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> os.environ['TESTING'] 
'test' 
>>> os.environ['TESTING'] = 'changed' 
>>> os.environ['TESTING'] 
'changed' 
>>> quit() 
~ $ 
~ $ 
~ $ echo $TESTING 
test 

這就是我所能想到的。可以做到嗎?

+2

修改的環境父進程相當於修改其內存空間,這意味着一般來說,不,這是不可能的。 – chepner

回答

2

你可以做的是,通過使用shell的Command Substitution功能,它更多地被用來評估在線命令解析一個Python命令shell命令的輸出的另一個命令。例如。 chown `id -u` /somedir

就你而言,你需要將shell命令打印到標準輸出,這將由shell進行評估。創建您的Python腳本,並添加:

testing = 'changed' 
print 'export TESTING={testing}'.format(testing=testing) 

然後從你的shell:

$ `python my_python.sh` 
$ echo TESTING 
changed 

基本上,任何字符串由shell來解釋,甚至lsrm