Cha*_*ens 122 bash export shell-script
很难承认,但我从来没有真正理解export过环境变量究竟做了什么。我知道如果我不导出变量,我有时在子进程中看不到它,但有时似乎可以。当我说的时候到底发生了什么
export foo=5
Run Code Online (Sandbox Code Playgroud)
什么时候不应该导出变量?
Pyl*_*lsa 162
导出的变量会传递给子进程,而非导出的变量则不会。
小智 28
当您使用 时export,您将变量添加到调用 export 命令的 shell 的环境变量列表中,并且 shell 的所有环境变量都传递给子进程,这就是您可以使用它的原因。
当你完成 shell 时,它的环境被破坏了,这就是为什么在登录时声明和导出环境变量的原因,例如在 .bashrc 文件中
sml*_*sml 16
来自man bash:
环境
当一个程序被调用时,它被赋予一个称为环境的字符串数组。这是名称-值对的列表,形式为名称=值。
shell 提供了几种操作环境的方法。在调用时,shell 会扫描自己的环境并为找到的每个名称创建一个参数,自动将其标记为导出到子进程。执行的命令继承环境。的
export和declare -x命令允许参数和功能被添加到和来自环境的删除。如果环境中的参数值被修改,新值将成为环境的一部分,取代旧值。任何执行命令继承的环境包括 shell 的初始环境,其值可以在 shell 中修改,减去unset命令删除的任何对,加上通过导出和declare -x命令的任何添加 。
| 归档时间: |
|
| 查看次数: |
153809 次 |
| 最近记录: |