局部变量与全局变量的关系及应用
局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量;
环境变量所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
将局部变量导出变成全局变量,我们可以使用 export 指令:
$ exportMYVAR
$ ./myvar2.sh
MYVAR is: hello
MYVAR is: hi there
现在 myvar2.sh 成功继承了环境便令 MYVAR,但是在 myvar2.sh 内改变 MYVAR 并不会影响全局的 MYVAR。在终端打印 MYVAR 结果仍旧是 hello
:
$ echo$MYVAR
hello
当 myvar2.sh 执行完后,执行它的环境将会被销毁。如果想让脚本和终端在同一环境下执行程序(此时在脚本内改变变量内容就会影响到整个环境),我们可以 source 这个脚本,具体的做法是在执行脚本的指令前面加一个 .
或者 source
:
$ MYVAR=hello
$ echo$MYVAR
hello
$ . ./myvar2.sh
MYVAR is: hello
MYVAR is: hi there
$ echo$MYVAR
hi there
以上就是本文的三个板块。在配置系统环境时经常用到 export
和 source
,如果你之前不明白这两个指令的含义,希望这篇文章对你有所帮助。