我想使用Python脚本设置一个环境变量,从而影响启动脚本的shell。这就是我的意思
python -c "import os;os.system('export TESTW=1')"但是命令
echo ${TESTW}不返回任何内容。也可以使用表达式
python -c "import os;os.environ['TEST']='1'"它不起作用。
有没有其他直接意义上的方法来做到这一点?
发布于 2014-09-13 20:02:43
你可以通过:putenv来影响环境,但它不会影响调用者的环境,只会影响派生子的环境。在启动python脚本之前设置环境确实要好得多。
我可能会提出这样的变种。您将创建一个bash脚本和一个python脚本。在bash脚本中,您可以使用params调用python脚本。一个参数-一个环境变量。例如:
#!/bin/bash
export TESTV1=$(python you_program.py testv1)
export TESTV2=$(python you_program.py testv2)发布于 2014-09-13 21:08:44
我强烈建议使用chepner和Maxym提出的解决方案( Python脚本提供值,您的shell导出变量)。如果您不能这样做,您仍然可以使用eval来执行python脚本在当前Bash进程中编写的内容:
eval $( python -c "print('export TESTW=1')" )注意:在Bash编程中,eval通常被理解为“邪恶的”。作为一般的经验法则,应该避免“盲目”地执行不完全在自己控制之下的代码。这包括由另一个程序在运行时生成,如本例所示。另请参阅堆栈溢出问题。
https://stackoverflow.com/questions/25822960
复制相似问题