使用Linux环境变量

什么是环境变量

bash shell用一个叫做环境变量(environment variable)的特性来存储有关shell会话和工作环境的信息。

在bash shell中,环境变量分为两类:

  • 全局变量
  • 局部变量

全局环境变量

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

要查看全局变量,可以使用env或者printenv命令。

要显示个别环境变量的值,可以使用printenv命令。也可以使用echo显示变量的值,需要在变量前加上$。

局部环境变量

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

设置用户定义变量

设置局部用户定义变量

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

可以通过等号给环境变量赋值,值可以是数值或者字符串。在涉及用户定义的局部变量时坚持用小写字母,这能够避免重新定义系统环境变量可能带来的灾难。记住,变量名、等号和值之间没有空格。这一点和python中的变量赋值是不一样的。

设置了局部环境变量之后,就能在shell的任何地方使用它了。但是,子进程无法使用父进程的用户定义变量,父进程也无法使用子进程的用户定义变量。可以通过将局部的用户定义变量变成全局变量来改变这种情况。

设置全局环境变量

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

这个过程通过export命令来完成,变量名前面不需要加$.

[root@CloudVM ~]# bash
[root@CloudVM ~]# 
[root@CloudVM ~]# echo $my_variable 
I am Global now
[root@CloudVM ~]# 
[root@CloudVM ~]# my_variable="Null"
[root@CloudVM ~]# 
[root@CloudVM ~]# echo $my_variable 
Null
[root@CloudVM ~]# 
[root@CloudVM ~]# exit
exit
[root@CloudVM ~]# echo $my_variable 
I am Global now

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

[root@CloudVM ~]# bash
[root@CloudVM ~]# 
[root@CloudVM ~]# echo $my_variable 
I am Global now
[root@CloudVM ~]# 
[root@CloudVM ~]# my_variable="Null"
[root@CloudVM ~]# 
[root@CloudVM ~]# echo $my_variable 
Null
[root@CloudVM ~]# 
[root@CloudVM ~]# exit
exit
[root@CloudVM ~]# echo $my_variable 
I am Global now

子shell甚至无法使用export命令改变父shell中全局环境变量的值。

[root@CloudVM ~]# my_variable="I am Global now"
[root@CloudVM ~]# 
[root@CloudVM ~]# export my_variable
[root@CloudVM ~]# 
[root@CloudVM ~]# echo $my_variable 
I am Global now
[root@CloudVM ~]# bash
[root@CloudVM ~]# 
[root@CloudVM ~]# echo $my_variable 
I am Global now
[root@CloudVM ~]# my_variable="Null"
[root@CloudVM ~]# 
[root@CloudVM ~]# export my_variable
[root@CloudVM ~]# 
[root@CloudVM ~]# echo $my_variable
Null
[root@CloudVM ~]# bash
[root@CloudVM ~]# 
[root@CloudVM ~]# echo $my_variable 
Null
[root@CloudVM ~]# exit
exit
[root@CloudVM ~]# echo $my_variable 
Null
[root@CloudVM ~]# exit
exit
[root@CloudVM ~]# echo $my_variable 
I am Global now

删除环境变量

可以用unset命令删除已经存在的环境变量。在unset命令中引用环境变量时,记住不要使用$。

[root@CloudVM ~]# echo $my_variable 
I am Global now
[root@CloudVM ~]# unset my_variable
[root@CloudVM ~]# 
[root@CloudVM ~]# echo $my_variable

[root@CloudVM ~]# 

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

[root@CloudVM ~]# my_variable="I am Global now"
[root@CloudVM ~]# export my_variable
[root@CloudVM ~]# echo $my_variable
I am Global now
[root@CloudVM ~]# bash
[root@CloudVM ~]# echo $my_variable
I am Global now
[root@CloudVM ~]# my_variable="Null"
[root@CloudVM ~]# echo $my_variable
Null
[root@CloudVM ~]# bash
[root@CloudVM ~]# echo $my_variable 
Null
[root@CloudVM ~]# exit
exit
[root@CloudVM ~]# unset my_variable
[root@CloudVM ~]# echo $my_variable

[root@CloudVM ~]# bash
[root@CloudVM ~]# echo $my_variable

[root@CloudVM ~]# exit
exit
[root@CloudVM ~]# echo $my_variable

[root@CloudVM ~]# exit
exit
[root@CloudVM ~]# echo $my_variable 
I am Global now
[root@CloudVM ~]# unset my_variable
[root@CloudVM ~]# echo $my_variable

[root@CloudVM ~]# 
[root@CloudVM ~]# my_variable="I am Global now"
[root@CloudVM ~]# export my_variable
[root@CloudVM ~]# echo $my_variable
I am Global now
[root@CloudVM ~]# bash
[root@CloudVM ~]# echo $my_variable
I am Global now
[root@CloudVM ~]# my_variable="Null"
[root@CloudVM ~]# echo $my_variable
Null
[root@CloudVM ~]# bash
[root@CloudVM ~]# echo $my_variable
Null
[root@CloudVM ~]# exit
exit
[root@CloudVM ~]# my_variable="Red"
[root@CloudVM ~]# echo $my_variable 
Red
[root@CloudVM ~]# bash
[root@CloudVM ~]# echo $my_variable 
Red
[root@CloudVM ~]# exit
exit
[root@CloudVM ~]# echo $my_variable 
Red
[root@CloudVM ~]# exit
exit
[root@CloudVM ~]# echo $my_variable 
I am Global now
[root@CloudVM ~]# unset my_variable
[root@CloudVM ~]# echo $my_variable

[root@CloudVM ~]# 

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值