python os.environ变量不传入bash脚本

python os.environ变量不传入bash脚本,python,bash,environment-variables,Python,Bash,Environment Variables,我有一个python脚本(使用伪终端)来传递一个名为“CDP”的环境变量: bash脚本是: kill_jobs() { pkill -TERM -P "$BASHPID" echo -e "$CDP" # returns False, should be True if [ "$CDP" == "True" ]; then echo -e "OPERATIONS ANNULEES" elif

我有一个python脚本(使用伪终端)来传递一个名为“CDP”的环境变量:

bash脚本是:

kill_jobs()
{
    pkill -TERM -P "$BASHPID"
    echo -e "$CDP"                                # returns False, should be True
    if [ "$CDP" == "True" ]; then
    echo -e "OPERATIONS ANNULEES"
    elif [ "$CDP" == "False" ]; then
    echo -e "OPERATIONS TERMINEES"
    fi
}
问题是,
$CDP=False
因此显示的消息不好。 原因是什么?
通过设置环境后,谢谢

os.environ["CDP"] = "True"
只有通过
os.system()、os.popen()或os.fork()和os.execv()调用bash脚本,才能在bash中获得此值。

所以如果你能加上

os.system('/bin/bash script.sh')
您应该能够在bash脚本中正常使用CDP的值

请阅读


我想os.environ和os.putenv()是密切相关的。

如果您没有设置,CDB如何设置为字符串“False”呢?很难理解您在这里想要实现的目标:(我明白了,“False”是在脚本bash调用时设置的。我稍后会编辑我的问题,我必须去吃…无论如何,谢谢!请查看@Guillaume+1了解您的问题,它帮助我理解操作系统。*甚至更多。我不明白,因为当我试图取消它时,shell脚本已经在运行请详细说明,无法猜出您的意思。我是说,您应该仅当使用os.system()启动脚本时,bash脚本中的et
CDP
值或我上面提到的任何方法,如果shell脚本正在运行,而您正在运行python程序,并且认为
CDP
可以被读取为True,那么这是不可能的。请立即终止python和shell脚本,并按照我的建议进行更改,然后查找预期结果。
os.system('/bin/bash script.sh')