据我所知,无论前面是否有“export”,变量赋值都是相同的。这是为了什么?
导出的变量如$HOME
and $PATH
可供 shell 运行的其他程序使用(继承),并将它们导出为环境变量(以及这些其他程序运行的程序等)。常规(非导出)变量不可用于其他程序。
$ env | grep '^variable='
$ # No environment variable called variable
$ variable=Hello # Create local (non-exported) variable with value
$ env | grep '^variable='
$ # Still no environment variable called variable
$ export variable # Mark variable for export to child processes
$ env | grep '^variable='
variable=Hello
$
$ export other_variable=Goodbye # create and initialize exported variable
$ env | grep '^other_variable='
other_variable=Goodbye
$
有关详细信息,请参阅该条目export builtin在 GNU Bash 手册中,还有关于命令执行环境 and 环境.
请注意,非导出变量可用于通过以下方式运行的子 shell( ... )
和类似的符号,因为这些子 shell 是主 shell 的直接克隆:
$ othervar=present
$ (echo $othervar; echo $variable; variable=elephant; echo $variable)
present
Hello
elephant
$ echo $variable
Hello
$
子 shell 可以更改其自己的任何变量的副本(无论是否导出),并且可能会影响其运行的进程所看到的值,但当然,子 shell 的更改不能影响父 shell 中的变量。
有关子 shell 的一些信息可以在下面找到命令分组 and 命令执行环境在 Bash 手册中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)