首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Python在当前shell中设置环境变量?

如何使用Python在当前shell中设置环境变量?
EN

Stack Overflow用户
提问于 2014-09-13 19:55:23
回答 2查看 3.2K关注 0票数 3

我想使用Python脚本设置一个环境变量,从而影响启动脚本的shell。这就是我的意思

代码语言:javascript
复制
python -c "import os;os.system('export TESTW=1')"

但是命令

代码语言:javascript
复制
echo ${TESTW}

不返回任何内容。也可以使用表达式

代码语言:javascript
复制
python -c "import os;os.environ['TEST']='1'"

它不起作用。

有没有其他直接意义上的方法来做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2014-09-13 20:02:43

你可以通过:putenv来影响环境,但它不会影响调用者的环境,只会影响派生子的环境。在启动python脚本之前设置环境确实要好得多。

我可能会提出这样的变种。您将创建一个bash脚本和一个python脚本。在bash脚本中,您可以使用params调用python脚本。一个参数-一个环境变量。例如:

代码语言:javascript
复制
#!/bin/bash

export TESTV1=$(python you_program.py testv1)
export TESTV2=$(python you_program.py testv2)
票数 3
EN

Stack Overflow用户

发布于 2014-09-13 21:08:44

我强烈建议使用chepner和Maxym提出的解决方案( Python脚本提供值,您的shell导出变量)。如果您不能这样做,您仍然可以使用eval来执行python脚本在当前Bash进程中编写的内容:

代码语言:javascript
复制
eval $( python -c "print('export TESTW=1')" )

注意:在Bash编程中,eval通常被理解为“邪恶的”。作为一般的经验法则,应该避免“盲目”地执行不完全在自己控制之下的代码。这包括由另一个程序在运行时生成,如本例所示。另请参阅堆栈溢出问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25822960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档