base shell中环境变量分为两类:全局变量、局部变量
全局环境变量
全局环境变量对于shell会话和所有生成的子shell都是可见的。局部变量只对创建他们的shell可见。
查看全部全局变量命令:env或printenv
查看个别环境变量命令:printenv [变量名称]
使用$打印变量
echo $变量名称
局部环境变量
局部变量只能在定义他们的进程中可见。
查看局部环境变量命令:set(set命令会显示出所有环境变量,包括局部变量、全局变量以及用户自定义变量)
设置环境变量
设置局部用户自定义变量
命令格式:[变量名]=[变量值]
定义变量时不允许有空格,否则空格后会被当成命令执行,如果变量值有空格可以用双引号来界定。
设置全局变量
创建全局变量的方法是先创建一个局部环境变量,然后再把它导出到全局环境中。
命令格式:export [变量名]
通过bash命令开启子shell(exit命令退出),查看父shell设置的全局变量。在子shell中修改全局变量并不会更改父变量值,只在自己当生效。
删除环境变量
可以用unset命令删除环境变量。
命令格式:unset [环境变量名称]
在处理全局变量时,在子进程中删除了一个全局变量只对当前子进程有效。
设置PATH环境变量
当在shell命令行输入外部命令时,shell必须搜索系统来找到对应程序。PATH环境变量定义了用于进行命令和程序查找的目录。
查看PATH变量:echo $PATH
PATH环境变量是用冒号隔开目录信息,所以如果想更高PATH变量可以直接引用原先值增加自己要追加的目录,如:
PATH=$PATH:/home/script
将目录驾到PATH目录中,就可以在任意目录执行命令(加入PATH程序的命令)。对PATH的修改只能到退出或重启系统,如果想一直有效可以修改/etc/profile文件,/etc/profile是系统默认bash shell的主启动文件。系统上每个用户登陆时都会执行这个启动文件,可以将更改命令加入到这个文件中。
查看/etc/profile文件命令:cat -n /etc/profile
观察profile代码,发现有for循环循环/etc/profile.d文件夹目录并执行里面可读文件,所以也可以将修改环境变量脚本(.sh脚本)加入到这个目录下也会生效(推荐这种方法,比加到/etc/profile文件中好,因为有些操作会更新/etc/profile文件,比如升级所用的发型版本)。
数组变量
环境变量可以作为数组使用,可以存多个变量,这些值可以单独引用,也可以作为数组引用。
定义数组变量格式:[变量名]=(var1 var2 var3 var4),数组元素用空格隔开。
定义数组变量:array=(zqq zqq1 zqq2 zqq3)
输出数组变量默认输出第一个:echo $array
输出数组固定元素:echo ${array[1]}
输出数组全部元素:echo ${array[*]}
修改索引位置的值:array[1]=zqq11
删除索引位置的值:unset array[1]
删除数组变量:unset array