linux学习之环境变量

时间:2024-03-24 21:48:07

一、什么是环境变量

用来存储有关shell会话和工作环境的信息。

1、全局环境变量

对于shell会话和所有生成的子shell都是可见的,局部变量只对创建它们的shell可见。

(1)使用env或printenv命令查看全局变量:

linux学习之环境变量

(2)显示个别环境变量的值

linux学习之环境变量

也可以使用echo显示变量的值,须在变量前面加上一个美元符($),能够让变量作为命令行参数:

linux学习之环境变量

2、局部环境变量

只能在定义它们的进程中可见。

set命令会显示为某个特定进程设置的所有环境变量,包括局部变量、全局变量以及用户定义变量。

二、设置用户定义变量

1、设置局部用户定义变量

可以通过等号给环境变量赋值,值可以是数值或字符串。

linux学习之环境变量

若要给变量赋一个含有空格的字符串值,必须用引号来界定字符串的首和尾。

linux学习之环境变量

注:设置局部变量后,可以在shell进程的任何地方使用,但是,若生成了另外一个shell,它在子shell中就不可用。如下:

linux学习之环境变量

2、设置全局环境变量

      在设定全局环境变量的进程所创建的子进程中,该变量都是可见的。创建全局环境变量的方法是先创建一个局部环境变量,然后再把它导出到全局环境中。通过export命令来完成。

linux学习之环境变量

linux学习之环境变量

       在定义并导出局部环境变量my_variable后,bash命令启动了一个子shell。在这个子shell中能够正确的显示出变量my_variable的值。该变量能够保留住它的值是因为export命令使其变成了全局环境变量。

修改子shell中全局环境变量并不会影响到父shell中该变量的值。

三、删除环境变量

用unset命令删除已经存在的环境变量,在unset命令中引用环境变量时,不使用$

linux学习之环境变量

 注:如果要用到变量,使用$;如果要操作变量,不使用$。

若在子进程中删除了一个全局环境变量,这只对子进程有效。该全局变量在父进程中依然可用。

linux学习之环境变量

和修改变量一样,在子shell中删除全局变量后,无法将效果反映到父shell中。

四、数组变量

可作为数组使用,数组是能够存储多个值得变量。这些值可以单独引用,也可以作为整个数组来引用。

linux学习之环境变量

只显示第一个值,若要显示其他的元素,需使用索引,环境变量数组的索引值都是从零开始。

linux学习之环境变量

若要显示整个数组变量,可用星号作为通配符放在索引值的位置:

linux学习之环境变量

可以改变某个索引值位置的值:

linux学习之环境变量

可用unset命令删除数组中某个值:

linux学习之环境变量

注:删除值时,该值的索引也被删除了

可以在unset命令后跟上数组名来删除整个数组:

linux学习之环境变量