Linux — 浅析环境变量

浅析环境变量




环境变量是在操作系统中具有一个特定名字的对象,它包含了一个或多个应用程序所将要使用到的信息. 环境变量相当于给系统或者用

户应用程度设置一些参数,具体什么作用这当然和具体的环境变量有关.很好理解的! 你就想象操作系统就是一个test.c程序,然后环

境变量就是test.c里面定义的全局变量! 大家都可以用!!!!


Linux是一个多用户的操作系统,每一个用户登录系统以后,都会有一个专门的运行环境.通常每个用户默认的环境都是相同的,这个默

认的环境实际上就是一组环境变量的定义. 用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量. 在Linux当中,

环境变量一般用大写加下划线命名.环境变量就相当于一个指针,当我们要查看指针所指向的值的时候需要解引用;同样的,当我们要

想查看环境变量里面的值的时候,需要在前面加$引用.


Linux下的变量种类:

按变量的生存周期来划分,Linux变量可分为两类:

1.永久的: 需要修改配置文件,变量永久生效.

2.临时的: 使用export命令声明即可,变量在关闭shell时失效.



常见的环境变量



1.PATH:指定命令的搜索路径

Linux — 浅析环境变量
我们可以看到,在当前目录下,默认的PATH的值.它表示当我们在当前目录下执行一条命令时命令的搜索路径. 每一个目录都以冒号隔开.

例如我们执行一个可执行程序xx,系统就会到这些目录下面去找,在这些目录下找到的话才执行,找不到的话就不执行.


2.:USER:使用者信息

Linux — 浅析环境变量

这个就是显示谁在使用我,不解释. 那么我们来看看我们系统里面所有的环境变量,这个很容易做到使用env指令:


3.env显示所有的环境变量

Linux — 浅析环境变量
Linux — 浅析环境变量

所以echo + 环境变量的名字 用于显示某个环境变量的值. env:显示所有环境变量.


export设置一个新的环境变量


注意一般来说,环境变量都用大写加下划线来命名. 比如我们现在设置几个环境变量:

Linux — 浅析环境变量

可以看到当我第一次查看laingliang这个环境变量的时候,我发现echo调用失败啦. 当创建环境变量以后并给他赋值为高富帅后,再次

echo查看的时候就会显示出gaofushuai. 


小测试;我们刚刚不是有一个PATH的环境变量对吧,我们说过当我们输入命令的时候系统会顺着这个路径去寻找命令的实体,并执行它.

现在呢 我们来验证一下到底对不对,我删掉PATH环境变量,然后看我的shell还能不能跑起来?? 来开始试验:

Linux — 浅析环境变量
我们发现在我删除掉PATH环境变量之前,shell是可以正常运行的. 当我删除掉它输入命令已经没有回应了. 如果你要说为什么export

可以运行. 那我问你你会把钥匙锁到房间里面吗? 如果万一这个路径被修改了找不到了,那么你都没有办法把它改回来了,怎么可能

会这样设计,export肯定不会和普通的命令放在同一个路径.继续,然后我们发现当我把路径加回来以后shell又重新恢复了生机. 

我们来好好体会一下环境变量.


unset删除一个环境变量


我们有增,那么肯定会有删除,我们linux下删除一个环境变量的方法就是:  unset + 环境变量名.

Linux — 浅析环境变量


readonly : 将环境变量设为只读状态


只读我们很好理解,就是只能读不能对它进行修改. 创建一个只读的环境变量MY_ENV,不能再对它进行修改了.为了方便演示所以这是一

个临时性的环境变量.所以在用户退出程序以后会自动失效.

Linux — 浅析环境变量


子bash中的环境变量


就是我们再当前的bash下再开一个子bash,我们看看我们定义的环境变量还在不在.然后再bash中定义一个环境变量看看子bash里面

能不能看到.


Linux — 浅析环境变量

我们现在很明显的看到呢! 这个在bash当中定义的环境变量子bash可以看到.但是呢->


Linux — 浅析环境变量
看子bash里面定一个环境变量bash当中是看不到的.




存放环境变量的文件


我们知道,在linux中一切皆文件.所以环境变量也是存放在文件中. linux中有很多记载环境变量的文件,他们是按照一定顺序被

系统读入的.


1./etc/profile


这个文件时每个用户登录时都会运行的环境变量设置,当用户第一次登录时该文件被执行,并从/ect/profile.d目录的配置文件

中搜索shell的设置.这个文件的作用就是当用户登录的时候用于获取系统的环境变量,只在登录的时候获取一次.


2./ect/bashrc


在执行完/ect/profile内容后,如果用户运行bash shell的话,则就执行这个文件. 当每次一个新的bash shell被打开时,该文

件被读取所以,如果想打开一个bash都执行那些操作,就可以在这个文件里面设置.


3.~/.bash_profile


每个用户都可以使用该文件输入自己专用的shell信息,当用户登录时,改文件仅仅执行了一次. 默认情况下,他设置一些环境

变量,执行用户的.bashrc文件, 单个用户对于此文件的修改只会影响到他自己以后的每一次登录.


4.~/.bashrc


该文件只包含专用于你的bash信息,当你登录时以及每次打开新的shell时,该文件就会自动被读取.


5.~/.bash_logout


每次在退出shell的时候会执行该文件.它提供了定制用户环境的功能,比如删除账号内的临时文件等命令就可以放在

bash_logout文件内.如果这个文件不存在的话则就执行其他命令.


这些文件都是为了用户配置环境变量提供的. 可以看到/ect/profile就相当于构造函数,~/.bash_logout就相当于析构函数.


Linux — 浅析环境变量