当我们在 bash 中设置环境变量时,我们必须export
这样做。所以将来我们可以使用它。(至少在连续会话中)。我明白这一点。
我的问题是该命令到底export
对变量做了什么?
它是否在某处创建一个临时文件来使用它,或者修改某些文件以保存变量?这很令人困惑。
因此,基本上,当我们在 shell 中工作时,它由一个环境支持来处理所有命令和其他事物,并且所有变量都是其中的一部分。当我们在 shell 中导出一个新创建的变量时,该变量也会加入到环境中。在此过程中,没有任何文件被修改或将新变量存储在任何地方。
答案1
不,您不必导出 shell 变量即可在同一 shell 会话中使用它。当子进程需要变量时,例如在新的 shell 中,或者从当前 shell 启动的某些工具需要它,您可以导出变量。
导出 shell 变量使其成为环境变量。环境变量是环境的一部分。其他也是环境一部分的东西包括当前工作目录和当前进程的“niceness”值以及其他零散的东西。
当新进程启动时,环境会被继承、复制。因此,新进程将从启动它的 shell 中获取所有环境变量的副本,但不会获取 shell 变量(未导出的变量)的副本。
这不涉及任何临时文件,只是内存中数据的副本。当新进程启动时,复制是由内核完成的。