今天在写程序的时候遇到了这样一个问题,通过程序设置环境变量并不会使这个环境变量生效,代码如下
#! /bin/bash # filename: xxx.bash export PYTHONPATH=~/.local/lib:$PYTHONPATH echo $PYTHONPATH
之后通过 python 调用该文件
import os cmd = '. xxx.bash' os.system(cmd)
可以看到终端已经打印了 PYTHONPATH,但是在终端中执行 echo $PYTHONPATH 并没有结果
这时候就想到了环境变量,以下是我的猜想:
当设置环境变量的时候,通过 bash 命令来修改,那么这个环境变量的生命周期将存在于本终端中,如果终端被销毁那么环境变量也会被销毁
由此可见通过这种方法设置环境变量只能使环境变量在某一个终端生效并不能影响一个用户,同理如果在一个程序中修改环境变量,那么这个环境变量也只会在该程序中生效,原因可能在于,程序执行的时候会新开期一个终端来执行改程序中所有的终端命令。
以上就是我的想法,希望大佬多多指正



