Linux环境变量
bash shell使用环境变量来存储shell回话和工作环境的信息,他允许您将数据存储在内存中以便在shell中运行的脚本或程序来访问。假如我们在写一个程序,在定义变量时,根据他的可见性,我们可以定义两种变量,即全局变量和局部变量,前者作用于整个程序,而后者则之能在其所定义的范围内可见。同样,linux的环境变量也是如此,也同样有局域的性的概念,即全局变量和本地变量,但他不是作用于程序内部,我们假设shell是一个很大的程序代码,全局变量则相当于是用extern声明的变量,在整个程序中可见,我们在shell中执行的程序就像shell调用一个函数一样,此时该函数内定义的变量就是本地变量。换句话说就是,全局变量所用进程都可访问,而本地变量则只有在定义他的进程中可见。
如何查看环境变量:
查看变量: $printenv
不同linux发行版本,其环境变量可能有所差异。
若想仅查看某特定的变量的值,如HOME,用$表示引用,我们可以使用如下方式:
$echo $HOME
查看本地变量:
$set
使用set命令将显示本地进程所能看到的所有的环境变量,其中就包括了前面用printenv所列出的环境变量
设置环境变量:
设置本地环境变量
$test=testing
这样就将test这个环境变量加入到了本地的环境变量中。我们可以用:
$set | grep test
来查看这个本地环境变量是否存在。
设置的时候还要注意,假如我们些成了 test= testing, 他会把test=当成命令来解释,此时就会出现:bash: testing: command not found错误。
而如果些成了test = testing,则会出现bash: test: =: unary operator expected错误。(这条错误是什么意思,谁能解释解释?Thank U)
写成test =testing则不会报错,但在本地环境变量中多出一个_==testing的东西。当然testing也不能包含空格,否则就和地一种情况相同了。
若要指定带有空格的,则可以用单引号括起来,例如:
$test=‘1 2 3 4 5’
建议:在设置本地环境变量时,使用小写字母,这样可以与系统环境变量相区别。
另外,设置好本地的环境变量之后,边可以在该shell的任何一个进程中见到他,但在其他shell中是不可见的。同样,如果子进程设置环境变量之后,离开子进程之后,该环境变量也是不可见的。
设置全局环境变量
设置全局环境变量的方法是,现设置一个本地的环境变量,然后用export将它到导出到全局环境变量中去。
$test=testing
$export test
这样当我们在用printenv显示的时候就能看到test这条环境变量了,此时他就有了全局性。
环境变量的移除
当我们想删除test这条环境变量的时候,可以使用:
$unset test
变量数组
环境变量也可以像数组那样,数组中的之可以独立,或整体使用。
$echo $test=(1 2 3 4 5 6)
直接引用test的时候则指挥成功引用起地一个值,当想引用第二个的时候则需要使用一个数值索引值
$echo ${test[1]}
注意,环境变量的的下标也是从0开始的.
要显示所有的值,可以用*作索引值:
$echo ${test[*]}
在删除单一的值的时候也要注意,例如:
$unset test[1]
则只是将test[1]的值删除,但后面的值不变。
此时在引用test[1]的时候将什么都没有,
$echo ${test[1]}
$
$echo ${test[*]}
1 3 4 5
我们可以用unset test来将数组整个删除
$unset test
此时,test这条环境变量就不存在了。
12-06
1898
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)