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

[ad_1]

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

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

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

export variable_name=value

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

如果你定义了一个变量 没有 export 像下面,

variable_name=value

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

让我给你举个例子,这样你就可以更好地理解它。

让我定义一个名为的变量 "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 环境中的任何其他子进程。

BASHBash 技巧Bash 变量LinuxLinux basicsShell

[ad_2]

Related Posts