码迷,mamicode.com
首页 > 系统相关 > 详细

Linux 环境变量梳理

时间:2018-07-01 16:58:44      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:空格   查看   分享   结束   命令行界面   alt   com   执行   bashrc   

  Linux中的环境变量有两种:全局变量和局部变量;

  全局变量就是所有进程共享的,无论创建多少个shell子进程(或者打开多少个命令行窗口窗口),他们都可以访问的变量可以称之为全局变量。

  局部变量就是作用范围只限于当前的shell进程和当前shell进程的子进程,其他的情况都不能访问该进程的局部变量。

定义、访问、删除局部变量

  技术分享图片

 

查看全局变量

  可以使用printenv或者env命令来打印所有的全局变量。

  技术分享图片

  访问某一项全局变量,可以使用printenv key,或者echo $key

  技术分享图片

  上面的这些全局变量,无论是本次打开的命令行界面中(其实就是当前进程),还是另外在打开一个命令行界面,这些值都可以使用相同的命令访问,并且值都是一样的,这样的变量叫全局变量。

设置全局变量

  技术分享图片

  注意设置全局变量之后,要使用export将其导入到全局变量,否则会被认为是一个局部变量。

  此时,如果在打开另外一个命令行窗口,即另外一个进程,那么是访问不到定义的全局变量MYGLOBALVAR。该全局变量会在定义该变量的进程结束后销毁。

  要想让自己定义的全局变量让所有的命令行窗口共享,可以将声明全局变量的命令写在$HOME/.bashrc里面,并且之后执行. .bashrc或者source .bashrc命令让脚本执行一下。

  比如:注意最后一行

  技术分享图片

  至于为什么要写在这个文件中,可以自行百度一下shell终端加载配置文件的顺序。

 

注意点

  1、无论是定义局部变量还是全局变量,格式都是相同的,key=value,等号两边没有空格

  2、访问局部变量和全局变量的都一项都可以使用echo $key。

  3、全局变量和局部变量都可以使用unset来删除,需要注意的是,此时变量名不要加$。

  4、只有在访问变量的值的时候,才在变量名前加$,其他情况,比如赋值、删除、导出都不加$。有一个除外,printenv访问全局变量不要$。

  5、全局变量比局部变量多了一个export命令,不进行export,始终是局部变量。

  6、全局变量如果不写在.bashrc中,那么生命周期只限于当前进程结束前有效。

 

易错点(变量的作用范围)

  局部变量的作用范围只限于当前进程。当前进程的子进程不能访问父进程中定义的局部变量。

  技术分享图片

   

  全局变量的作用范围是当前进程,以及当前进程的后代进程(子进程,子进程的子进程...)

  技术分享图片

  

  全局变量持久化操作后(声明在.bashrc中),任何进程都能访问,任何进程的任何子进程也都可以访问。

  

 

Linux 环境变量梳理

标签:空格   查看   分享   结束   命令行界面   alt   com   执行   bashrc   

原文地址:https://www.cnblogs.com/-beyond/p/9250406.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!