根据我可以告诉,变量赋值是相同的,无论是或没有前面的“导出”。这是为了什么?
导出的变量(例如$ HOME和$ PATH)可用于其他程序。
其他程序不能使用常规(非导出)变量。
原文链接:https://www.f2er.com/bash/391856.html其他程序不能使用常规(非导出)变量。
$ 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 $
有关更多信息,请参阅GNU Bash手册中的export
builtin条目。
请注意,非导出的变量将可用于通过(…)运行的子shell和类似的符号:
$ othervar=present $ (echo $othervar; echo $variable; variable=elephant; echo $variable) present Goodbye elephant $ echo $variable Goodbye $
当然,subshell不能影响父shell中的变量。
关于subshell的一些信息可以在Bash手册中的command grouping和command execution environment下找到。