Linux中的全局环境变量和局部环境变量

Linux中的全局环境变量和局部环境变量

bash shell用一个叫作环境变量 (environment variable)的特性来存储有关shell会话和工作环境的信息(这也是它们被称作环境变量的原 因)。这项特性允许你在内存中存储数据,以便程序或shell中运行的 脚本能够轻松访问到它们。这也是存储持久数据的一种简便方法。
在bash shell中,环境变量分为两类 :

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

一、全局环境变量

1、 通过 env 这个命令可以查看系统的所有全局变量 。系统默认的全局变量名,基本都是大写的。 如果是自己创建的局部变量或是shell脚本,最好就值使用小写字母。

2、我们也可以通过echo $SHELL 或者printenv SHELL 这样的方式,来查看单个变量的值 。(SHELL是我们想知知道的变量的名字)
在这里插入图片描述

在这里插入图片描述

二、局部环境变量

1、局部环境变量只能在定义它们的进程中可见

可以通过echo $变量名 这种格式来打印出局部变量名。 或者set | grep 变量名 这种方式 ,值得注意的是env 和 printenv 这种方式只打印全局变量。在这里插入图片描述

在这里插入图片描述

2、设置局部环境变量
在shell 进程里设置环境变量的操作和給变量赋值类似,使用 一个等号就可以 my_var= hello_world,比较特别的是变量名、等号和值之间不能有空格。否则bash shell就会把值变量的值my_var当成一个单独的命令

在这里插入图片描述

3、 局部环境变量的使用范围

  • 设置了局部环境变量后,就能在shell进程的任何地方使用它了。但是,如果这个shell生成了另外一个子shell,它在子shell中就不可用。然后当你退出子shell并回到原来的shell时,这个局部环境变量依然可用

在这里插入图片描述

  • 同理,如果在子进程中设置了一个局部环境变量,那么一旦你退出了子进程,那个局部环境变量就不可用

  • 如果我们想在父shell 进程中的环境变量,可以被 子shell进程调用,那么就要把这个环境变量设置成全局环境变量

三、 设置全局环境变量

1、设置全局环境变量,是通过export 命令 来设置的,比如:
export my_var="I am Global now"
或者分两步

my_var="I am Global now"    
export  my_var    

2、 设置完成后,我们在子进程中也可以使用这个全局环境变量了。
但是有注意的点是 ,如果我们在父进程里设置全局变量,子进程可以使用,但是子进程设置的全局变量,父进程是没办法调用的。全局环境变量也只能是从父到子传这种场景如下:

3、当父shell定义一个全局环境变量,在子shell中,这个全局环境变量被重新定义了一次,退出子shell, 这个全局环境变量还是之前的值。

在这里插入图片描述

4、 删除环境变量

删除环境变量我们使用unset + 变量名 .我们在读取变量的时候要加上$这个提取符号。
在这里插入图片描述
总结:

  • 1、环境变量的设置有两种,一种就是普通的給变量赋值是我们说的局部变量赋值,另一种是全局环境变量赋值。
  • 2、 无论哪种,子进程的值,父进程是无法读取到的,同样也无法改变。
  • 3、子进程和父进程里非全局环境变量,都是相互独立的(进程之间资源不共享)。
  • 4、 子进程如果想要读取到父进程的值,需要设置成全局环境变量。
  • 5、子进程中可以对全局环境变量重新定义,改变,删除,但是影响不到父进程里的全局环境变量。
  • 30
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值