如果我不编辑 .bashrc 或其他配置文件,那么当我注销或关闭终端时,我设置的环境变量就会消失。
我很好奇的是,那些“临时”环境变量保存在哪里?
我猜想,它们可能就在记忆中。这是有道理的,因为当终端关闭时它们会消失(相当于我正在使用的终端从内存中消失)。我对么?
答案1
环境变量存储在与进程关联的内存中。
每个进程都可以访问自己的一组环境变量。子进程(由“当前”进程启动的进程)继承复制这些变量。任何进程都不可能更改任何其他进程的环境变量。
使用 shell,例如bash
您可以在登录时定义环境变量,或启动新bash
进程。 shell 本身还定义了许多环境变量(PWD
在注释提示后,我想到了),以及其他环境变量,例如PATH
,在更深层次上使用shell
- 在本例中由系统库使用。
答案2
严格来说,环境变量并没有像我们通常认为的那样“保存”。它们存在于进程的内存中。它们是在进程启动时创建的(可能作为调用进程的环境变量的副本)
在 Linux 中,你实际上能如果您知道需要环境变量的进程的 PID,则将它们作为某种“文件”获取。他们在/proc/<pid>/environ
.
在 bash 中,您可以从环境变量中获取 PID $
,因此您想要的文件是/proc/$$/environ
.它们存储为名称=值对,它们之间有一个空字符。这并不是一个真正的文件(并且你不能写入它),但是你可以使用权就好像它是一个文件一样,因为有时这样做很方便。
答案3
是和否(不过,是多于否)。它们位于 shell 的内存中,因此它们不仅会在当前 shell 退出时消失,而且如果您在当前 shell 之外的任何位置打开新 shell,它们也不会存在。