3. 局部变量和环境变量
局部变量
局部变量是只能在当前 Shell 内使用的变量,此变量不能传递给自己的子进程。
环境变量(全局变量)
环境变量也称全局变量,是可以被自己的子进程继承和使用的变量。
创建和修改局部变量的语法
变量名=值
创建和修改环境变量的语法
- 方法1,使用 export 命令直接创建环境变量。
export 变量名=值
- 方法2,先创建局部变量,再使用 export 命令修改为环境变量。
变量名=值
export 变量名
如:
weimingze@mzstudio:~$ lvar="我是局部变量"
weimingze@mzstudio:~$ export gvar="我是环境变量"
weimingze@mzstudio:~$ gvar2="我是环境变量2"
weimingze@mzstudio:~$ export gvar2
weimingze@mzstudio:~$ echo "lvar=${lvar} gvar=${gvar} gvar2=${gvar2}"
lvar=我是局部变量 gvar=我是环境变量 gvar2=我是环境变量2
测试局部变量和全局变量的取值
编写 test_var.sh 文件并写入如下内容:
#!/bin/bash
echo "lvar=${lvar}"
echo "gvar=${gvar}"
echo "gvar2=${gvar2}"
添加读取和执行权限
weimingze@mzstudio:~$ chmod +rx test_var.sh
在此 bash 内执行
weimingze@mzstudio:~$ source test_var.sh
lvar=我是局部变量
gvar=我是环境变量
gvar2=我是环境变量2
weimingze@mzstudio:~$ . test_var.sh
lvar=我是局部变量
gvar=我是环境变量
gvar2=我是环境变量2
在新的 bash 进程内执行
weimingze@mzstudio:~$ bash test_var.sh
lvar=
gvar=我是环境变量
gvar2=我是环境变量2
weimingze@mzstudio:~$ ./test_var.sh
lvar=
gvar=我是环境变量
gvar2=我是环境变量2
可见局部变量没有传递给子进程。
查看所有环境变量
printenv 命令用来打印所有的环境变量。如:
weimingze@mzstudio:~$ printenv
SHELL=/bin/bash
PWD=/home/weimingze
LOGNAME=weimingze
HOME=/home/weimingze
LANG=C.UTF-8
USER=weimingze
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
gvar=我是环境变量
gvar2=我是环境变量2
...
说明
环境变量
值说明
SHELL当前使用的 Shell。
PWD当前工作路径。
LOGNAME当前登录用户名。
HOME当前的用户主目录。
LANG当前使用的语言。
USER用户名。
PATH命令的搜索路径列表,用英文的 冒号
: 分隔。gvar自定义环境变量。
...
其他(略)。
练习:
- 写个 Shell 脚本程序文件
test.sh,要求打印如下信息:- 打印当前用户的名称
- 打印当前用户的家文件夹(家目录)。
- 打印当前工作路径
- 打印当前用户使用的Shell。
- 运行次
test.sh脚本程序文件。