我正在尝试从Python内部修改父外壳上的环境变量。到目前为止,我没有尝试过:
~ $ 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
这就是我所能想到的。能做到吗如何在Python中设置父级外壳的环境变量?
这是不可能的。
子进程从其父级继承其环境,而不是共享它们。因此,您对环境所做的任何修改都会在子(python)进程中反映为[[only。实际上,您只是覆盖os
模块根据您的Shell环境而不是Shell的实际环境变量创建的字典。
chown `id -u` /somedir
。 在您的情况下,您需要将shell命令打印到stdout,它将由shell评估。创建您的Python脚本并添加:
testing = 'changed'
print 'export TESTING={testing}'.format(testing=testing)
然后从您的外壳:
$ `python my_python.sh` $ echo TESTING changed
基本上,任何字符串都将由shell解释,甚至是ls
,rm
等