小编典典

为什么在python中设置的环境变量不能持续存在?

python

我希望编写python脚本,通过在要执行一些模拟代码的任何目录中运行该脚本来创建一些适当的环境变量,并且我读到我无法编写脚本来使这些环境变量持久存在于其中。
Mac OS终端。有两件事:

这是真的?

看起来这将是一件有用的事情;为什么一般不可能呢?


阅读 295

收藏
2020-12-20

共1个答案

小编典典

您无法通过python做到这一点,但是一些聪明的bash技巧可以做类似的事情。基本理由是:每个进程的内存空间中都存在环境变量。使用fork()创建新进程时,它将继承其父级的环境变量。当在shell(例如bash)中设置环境变量时,如下所示:

export VAR="foo"

您正在执行的操作是告诉bash将其进程空间中的变量VAR设置为“
foo”。当您运行程序时,bash使用fork(),然后使用exec()来运行该程序,因此,从bash运行的任何内容都会继承bash环境变量。

现在,假设您要创建一个bash命令,该命令使用您当前目录中名为“ .data”的文件中的内容设置一些环境变量DATA。首先,您需要使用命令从文件中获取数据:

cat .data

打印数据。现在,我们要创建一个bash命令以在环境变量中设置该数据:

export DATA=`cat .data`

该命令获取.data的内容,并将其放入环境变量DATA中。现在,如果将其放在别名命令中,则有一个bash命令可以设置环境变量:

alias set-data="export DATA=`cat .data`"

您可以将该别名命令放在主目录的.bashrc或.bash_profile文件中,以使该命令在您启动的任何新bash shell中可用。

2020-12-20