linux环境变量查询与设置

Linux环境变量查询与设置

在bash shell中,环境变量分为两类:全局变量、局部变量。

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

全局环境变量

查看全局变量,使用env或printenv命令。如果要查看某个环境变量的值,可以使用printenv命令,但是不可以使用env命令。

[root@localhost ~]# printenv HOME
/root
[root@localhost ~]# 

第二种查看方法是echo命令。但是查看的变量前需要加上$美元符号。

[root@localhost ~]# echo $HOME
/root
[root@localhost ~]# 

局部环境变量

局部环境变量只有在定义他们的进程中可见。Linux系统默认定义了标准的局部环境变量。如果自定义局部变量,那么这些变量被称为用户定义局部变量。

Linux中没有特定的命令查看局部环境变量。Set命令会显示某个特定进程设置的所有环境变量,包括局部变量、全局变量、用户自定义变量。

[root@localhost ~]# set

自定义变量

所有的环境变量名均使用大写字母,这是bash shell的标准惯例。如果是你自己创建的局部变量或是shell脚本,请使用小写字母。变量名区分大小写。在涉及用户定义的局部变量时坚持使用小写字母,这能够避免重新定义系统环境变量可能带来的灾难。

定义局部变量

一旦启动了bash shell(或者执行一个shell脚本),就能创建在这个shell进程内可见的局部变量了。可以通过等号给环境变量赋值,值可以是数值或字符串。

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

[root@localhost tmp]# echo $my_var   由于没有my_var变量,打印空行

[root@localhost tmp]# my_var="Hello"   设置my_var变量的值为Hello,如果值没有空格,可以省略双引号
[root@localhost tmp]# echo $my_var   使用my_var变量,需要加上$作为引用,打印出来值
Hello
[root@localhost tmp]#

定义全局变量

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

[root@localhost tmp]# echo $my_var   由于没有my_var变量,打印空行

[root@localhost tmp]# my_var="Hello"   设置my_var变量的值为Hello,如果值没有空格,可以省略双引号
[root@localhost tmp]# echo $my_var   使用my_var变量,需要加上$作为引用,打印出来值
Hello
[root@localhost tmp]# export my_var   将局部变量导入到全局变量中
[root@localhost tmp]# echo $my_var    打印该变量
Hello
[root@localhost tmp]# bash    重新打开一个bash shell进程,测试是否可以访问变量my_var
[root@localhost tmp]# echo $my_var   新的进程依旧可以访问变量
Hello
[root@localhost tmp]# exit   退出当前进程,返回上一个进程
exit
[root@localhost tmp]# echo $my_var   原本的进程有也可以访问。
Hello
[root@localhost tmp]# printenv   打印全局变量
# 其他全局变量省略不显示
my_var=Hello World   刚才导入的全局变量已经显示
_=/usr/bin/printenv
[root@localhost tmp]# 

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

[root@localhost tmp]# echo $my_var   父shell的全局变量值
Hello World
[root@localhost tmp]# bash   开启一个子shell
[root@localhost tmp]# echo $my_var  打印子shell的变量值
Hello World
[root@localhost tmp]# my_var="Bash Hello World"   重新设置子shell的变量值
[root@localhost tmp]# echo $my_var   重新打印子shell变量
Bash Hello World
[root@localhost tmp]# exit   退出子shell进程
exit
[root@localhost tmp]# echo $my_var   重新打印父shell进程
Hello World
[root@localhost tmp]# 

子shell甚至无法使用 export 命令改变父shell中全局环境变量的值。尽管子shell重新定义并导出了变量 my_variable ,但父shell中的 my_variable 变量依然保留着原先的值。所以linux中,子shell是无法操作父shell的环境变量。

删除环境变量

当然,既然可以创建新的环境变量,自然也能删除已经存在的环境变量。可以用 unset 命令完成这个操作。在 unset 命令中引用环境变量时,记住不要使用 $ 。

[root@localhost tmp]# echo $my_var    打印环境变量
Hello World
[root@localhost tmp]# unset my_var    删除my_var环境变量
[root@localhost tmp]# echo $my_var
[root@localhost tmp]# 

在涉及环境变量名时,什么时候该使用 $ ,什么时候不该使用 $ ,实在让人摸不着头脑。

记住一点就行了:如果要用到变量,使用 $ ;如果要操作变量,不使用 $ 。这条规则的一

个例外就是使用 printenv 显示某个变量的值。

在处理全局环境变量时,事情就有点棘手了。如果你是在子进程中删除了一个全局环境变量,

这只对子进程有效。该全局环境变量在父进程中依然可用。所以,要删除某个环境变量,需要父进程处理才可以。

设置环境变量

遇到修改系统环境变量的问题。如果一个变量已经很长,如果重新设置难免会出错,所以linux提供了扩展的方法去修改变量。

[root@localhost tmp]# my_var="Hello"  设置环境变量
[root@localhost tmp]# echo $my_var 
Hello
[root@localhost tmp]# my_var=$my_var" World"   环境变量扩展,添加World
[root@localhost tmp]# echo $my_var  重新打印
Hello World
[root@localhost tmp]# 
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie
应支付0元
点击重新获取
扫码支付

支付成功即可阅读