环境:RHEL 7.1 或 MAC 10.11.6
局部变量只能在创建它们的 shell 中使用。
环境变量可以在创建它们的 shell 及其派生出来的任意子进程中使用。
shell 变量是在 shell 初始化的时候被系统设定的变量,比如前文提到的《shell 变量》。
那么,区别到底在哪里呢?通过一个简单的测试说明一下。
实验前,先介绍一下 set、env、export 命令。
(1)set:显示或设置局部变量。
(2)env:显示或设置当前用户的环境变量。
(3)export:显示或设置导出成当前用户的环境变量的局部变量。
开始实验:
(1)设置一个局部变量:$ aaa=bbb
(2)使用 echo 查看刚刚设置的局部变量:$ echo $aaa,输出 bbb,说明局部变量中有 aaa。
(3)使用 env 查看当前用户的环境变量:$ env | grep aaa,没有任何输出,说明当前环境变量中没有 aaa。
(4)使用 set 查看刚刚设置的局部变量:$ set | grep aaa,输出 aaa=bbb,说明局部变量中有 aaa。
(5)使用 export 查看当前用户的环境变量:$ export | grep aaa,没有任何输出,说明当前环境变量中没有 aaa。
(6)使用 export 导出局部变量:$ export aaa
(7)使用 env 再次查看当前用户的环境变量:$ env | grep aaa,输出 aaa=bbb,说明当前环境变量中有 aaa。
(8)使用 export 查看当前用户的环境变量:$ export | grep aaa,输出 aaa=bbb,说明当前环境变量中有 aaa。
小结:
参考文献:
1. 《精通 shell 编程(第二版)》
局部变量只能在创建它们的 shell 中使用。
环境变量可以在创建它们的 shell 及其派生出来的任意子进程中使用。
shell 变量是在 shell 初始化的时候被系统设定的变量,比如前文提到的《shell 变量》。
那么,区别到底在哪里呢?通过一个简单的测试说明一下。
实验前,先介绍一下 set、env、export 命令。
(1)set:显示或设置局部变量。
(2)env:显示或设置当前用户的环境变量。
(3)export:显示或设置导出成当前用户的环境变量的局部变量。
开始实验:
(1)设置一个局部变量:$ aaa=bbb
(2)使用 echo 查看刚刚设置的局部变量:$ echo $aaa,输出 bbb,说明局部变量中有 aaa。
(3)使用 env 查看当前用户的环境变量:$ env | grep aaa,没有任何输出,说明当前环境变量中没有 aaa。
(4)使用 set 查看刚刚设置的局部变量:$ set | grep aaa,输出 aaa=bbb,说明局部变量中有 aaa。
(5)使用 export 查看当前用户的环境变量:$ export | grep aaa,没有任何输出,说明当前环境变量中没有 aaa。
(6)使用 export 导出局部变量:$ export aaa
(7)使用 env 再次查看当前用户的环境变量:$ env | grep aaa,输出 aaa=bbb,说明当前环境变量中有 aaa。
(8)使用 export 查看当前用户的环境变量:$ export | grep aaa,输出 aaa=bbb,说明当前环境变量中有 aaa。
小结:
特征
|
局部变量
|
环境变量
|
shell
变量
|
受子进程影响
|
|
√
|
√
|
被用户设定
|
√
|
√
|
|
被 shell 设定
|
|
|
√
|
可被用户更改
|
√
|
√
|
|
被 shell 限制
|
|
|
√
|
参考文献:
1. 《精通 shell 编程(第二版)》