导出在 BASH 中起什么作用?

导出在 BASH 中起什么作用?

可能重复:
bash 中“a=b”和“export a=b”的区别

很难承认,但我从来没有真正理解export环境变量到底有什么作用。我知道如果我不导出变量,有时我无法在子进程中看到它,但有时似乎可以。当我说

export foo=5

什么时候我不应该导出变量?

答案1

man bash

环境

当程序被调用时,它会被赋予一个字符串数组,称为环境。这是一个名称-值对列表,形式为名称=值。

shell 提供了多种操作环境的方法。在调用时,shell 会扫描自己的环境并为找到的每个名称创建一个参数,并自动将其标记为导出到子进程。执行的命令会继承环境。和export 命令 declare -x 允许在环境中添加和删除参数和函数。如果修改了环境中参数的值,新值将成为环境的一部分,取代旧值。任何执行的命令继承的环境都由 shell 的初始环境组成,其值可以在 shell 中修改,减去命令删除的任何对unset ,加上通过导出和 declare -x命令添加的任何内容。

答案2

导出的变量会传递给子进程,未导出的变量则不会。

答案3

当您使用时export,您将变量添加到调用导出命令的 shell 的环境变量列表中,并且 shell 的所有环境变量都传递给子进程,这就是您可以使用它的原因。

当你完成 shell 时,它的环境会被销毁,这就是为什么在登录时声明和导出环境变量的原因,例如在 .bashrc 文件中

相关内容