加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – python中不可用的环境变量

发布时间:2020-12-15 18:34:09 所属栏目:安全 来源:网络整理
导读:关于环境变量,我有一个非常有趣的问题,谷歌搜索并没有向我显示任何有意义的结果: $echo $BUCKET python -c "import os; print os.environ['BUCKET']"mule-uploader-demoTraceback (most recent call last): File "string",line 1,in module File "/usr/lib/
关于环境变量,我有一个非常有趣的问题,谷歌搜索并没有向我显示任何有意义的结果:
$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'

所以我有一个环境变量,可以在bash中使用,但不在python中.怎么会发生这种情况,我该如何解决?以下是一些其他细节:

>环境变量通过source envvars.sh命令设置
> envvars.sh文件仅包含如下所示的行:KEY = value
>我在bash和zsh中都重现了这一点
>如果我执行导出BUCKET = $BUCKET,它可以工作

这与bash中的变量范围有关. export使您的变量可用于子进程,例如参见:
→ export BUCKET=foo 
→ env | grep BUCKET
80:BUCKET=foo
→ PAIL=bar  
→ env | grep PAIL  # no output
→ python -c "import os; print os.environ['BUCKET']"
foo
→ python -c "import os; print os.environ['PAIL']"  
Traceback (most recent call last):
  File "<string>",in <module>
  File "...",in __getitem__
    raise KeyError(key)
KeyError: 'PAIL'
→ CAN=baz python -c "import os; print os.environ['CAN']"
baz

所以在子进程中PAIL是失败的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读