定义带和不带导出的 Bash 变量之间的区别

我添加了这个 “导出 HISTCONTROL=ignoredups” 排队 ~/.bashrc 文件到 避免 Bash 历史记录中的重复条目 在我的 Linux 桌面上。 你有没有注意到我在前面加上了 HISTCONTROL 变量与 "export"? 你知道吗 – 什么是 "export" 选项? 如果您想知道定义之间有什么区别 bash 变量 有和没有导出选项,请继续阅读!

定义带和不带导出的 Bash 变量之间的区别

我们定义一个变量 export 使其可用于所有子进程(或子进程)。 含义 – 如果您定义一个变量 export 如下所示,

export variable_name=value

该变量可用于您从该 shell 进程运行的任何子进程。

如果你定义一个变量 没有 export 如下所示,

variable_name=value

该变量仅限于 shell,对任何其他子进程均不可用。 您可以将它用于临时和/或循环变量。

请允许我向您展示一个 example,所以你可以更好地理解它。

让我定义一个名为的变量 "ostechnix" 没有 "export" 如下所示:

$ ostechnix="Welcome to ostechnix.com blog!"

现在使用“echo”命令显示值:

$ echo $ostechnix

它将显示 ostechnix 变量的值:

Welcome to ostechnix.com blog!

现在,通过运行以下命令启动一个新的 Bash shell 会话:

$ bash

然后,尝试使用显示 ostechnix 变量的值 echo 命令:

$ echo $ostechnix
定义 bash 没有导出的变量

看? 它不返回任何东西! 您只看到空白输出。 因此证明,当我们定义一个没有 export,它对子进程不可用。

让我们再次定义相同的变量 export 选项:

$ export ostechnix="Welcome to ostechnix.com blog!"

显示变量的值:

$ echo $ostechnix

样本输出:

Welcome to ostechnix.com blog!

启动一个新的 shell 会话:

$ bash

再次尝试显示变量的值:

$ echo $ostechnix

它现在将返回该值。

定义带和不带导出的 Bash 变量之间的区别

因此,导出使该变量可用于该 shell 环境中的任何其他子进程。