一、什么是环境变量
用来存储有关shell会话和工作环境的信息。
1、全局环境变量
对于shell会话和所有生成的子shell都是可见的,局部变量只对创建它们的shell可见。
(1)使用env或printenv命令查看全局变量:
(2)显示个别环境变量的值
也可以使用echo显示变量的值,须在变量前面加上一个美元符($),能够让变量作为命令行参数:
2、局部环境变量
只能在定义它们的进程中可见。
set命令会显示为某个特定进程设置的所有环境变量,包括局部变量、全局变量以及用户定义变量。
二、设置用户定义变量
1、设置局部用户定义变量
可以通过等号给环境变量赋值,值可以是数值或字符串。
若要给变量赋一个含有空格的字符串值,必须用引号来界定字符串的首和尾。
注:设置局部变量后,可以在shell进程的任何地方使用,但是,若生成了另外一个shell,它在子shell中就不可用。如下:
2、设置全局环境变量
在设定全局环境变量的进程所创建的子进程中,该变量都是可见的。创建全局环境变量的方法是先创建一个局部环境变量,然后再把它导出到全局环境中。通过export命令来完成。
在定义并导出局部环境变量my_variable后,bash命令启动了一个子shell。在这个子shell中能够正确的显示出变量my_variable的值。该变量能够保留住它的值是因为export命令使其变成了全局环境变量。
修改子shell中全局环境变量并不会影响到父shell中该变量的值。
三、删除环境变量
用unset命令删除已经存在的环境变量,在unset命令中引用环境变量时,不使用$
注:如果要用到变量,使用$;如果要操作变量,不使用$。
若在子进程中删除了一个全局环境变量,这只对子进程有效。该全局变量在父进程中依然可用。
和修改变量一样,在子shell中删除全局变量后,无法将效果反映到父shell中。
四、数组变量
可作为数组使用,数组是能够存储多个值得变量。这些值可以单独引用,也可以作为整个数组来引用。
只显示第一个值,若要显示其他的元素,需使用索引,环境变量数组的索引值都是从零开始。
若要显示整个数组变量,可用星号作为通配符放在索引值的位置:
可以改变某个索引值位置的值:
可用unset命令删除数组中某个值:
注:删除值时,该值的索引也被删除了
可以在unset命令后跟上数组名来删除整个数组: