定义bash变量时,带export和不带export之间的区别
时间:2020-03-21 11:43:21 来源:igfitidea点击:
我在~/.bashrc文件中添加了此“ export HISTCONTROL = ignoredups”行,以避免在Linux桌面上的Bash历史记录中出现重复的条目。
我们是否注意到我在HISTCONTROL变量前面加上了“ export”?
我们知道“export”选项有什么用吗?
如果我们想知道定义带和不带导出选项的bash变量之间有什么区别,请继续阅读!
定义带export和不带export的Bash变量之间的区别
我们使用export定义变量,以使其可用于所有子流程(或者子流程)。
意思是,如果我们使用如下所示的export定义变量,
export variable_name=value
该变量可用于从该Shell进程运行的任何子进程。
如果我们定义了一个不导出的变量,如下所示,
variable_name=value
该变量仅限于shell程序,不适用于任何其他子进程。
我们可以将其用于临时和/或者循环变量。
请允许我向我们展示一个示例,以便我们更好地理解它。
让我定义一个名为“ theitroad”的变量,而不使用“ export”,如下所示:
$theitroad="Welcome to theitroad.com blog!"
现在使用“ echo”命令显示该值:
$echo $theitroad
它将显示theitroad变量的值:
Welcome to theitroad.com blog!
现在,通过运行以下命令来启动新的Bash Shell会话:
$bash
然后,尝试使用“ echo”命令显示theitroad变量的值:
$echo $theitroad
看?
它不返回任何东西!我们只会看到空白输出。
因此证明了,当我们定义不带导出的变量时,子进程将无法使用它。
让我们再次使用export选项定义相同的变量:
$export theitroad="Welcome to theitroad.com blog!"
显示变量的值:
$echo $theitroad
输出示例:
Welcome to theitroad.com blog!
开始一个新的shell会话:
$bash
重试以显示变量的值:
$echo $theitroad
现在它将返回该值。
因此,export使该变量可用于该Shell环境中的任何其他子进程。