Gab*_*aru 5 python bash environment-variables
我有一个关于环境变量的非常有趣的问题,并且谷歌搜索没有显示任何有意义的结果:
$ echo $BUCKET && python -c "import os; print os.environ['BUCKET']"
mule-uploader-demo
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__
raise KeyError(key)
KeyError: 'BUCKET'
Run Code Online (Sandbox Code Playgroud)
所以我有一个在 bash 中可用但在 python 中不可用的环境变量。怎么会发生这种情况以及如何解决它?以下是一些其他详细信息:
source envvars.sh
通过命令设置环境变量envvars.sh
文件仅包含如下所示的行:KEY=value
export BUCKET=$BUCKET
,它会起作用这与 bash 中的变量范围有关。export
使您的变量可用于子流程,例如:
\xe2\x86\x92 export BUCKET=foo \n\xe2\x86\x92 env | grep BUCKET\n80:BUCKET=foo\n\xe2\x86\x92 PAIL=bar \n\xe2\x86\x92 env | grep PAIL # no output\n\xe2\x86\x92 python -c "import os; print os.environ[\'BUCKET\']"\nfoo\n\xe2\x86\x92 python -c "import os; print os.environ[\'PAIL\']" \nTraceback (most recent call last):\n File "<string>", line 1, in <module>\n File "...", line 23, in __getitem__\n raise KeyError(key)\nKeyError: \'PAIL\'\n\xe2\x86\x92 CAN=baz python -c "import os; print os.environ[\'CAN\']"\nbaz\n
Run Code Online (Sandbox Code Playgroud)\n\n所以在子进程中PAIL
是失败的。
归档时间: |
|
查看次数: |
5719 次 |
最近记录: |