Linux — 浅析环境变量

来源:互联网 发布:淘宝网儿童冬季服装 编辑:程序博客网 时间:2024/06/07 10:04

浅析环境变量




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

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

的全局变量! 大家都可以用!!!!


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

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

线命名.环境变量就相当于一个指针,当我们要查看指针所指向的值的时候需要解引用;同样的,当我们要想查看环境变量里面的值的时候,需要在前

面加$引用.


Linux下的变量种类:

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

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

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



常见的环境变量



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


我们可以看到,在当前目录下,默认的PATH的值.它表示当我们在当前目录下执行一条命令时命令的搜索路径. 每一个目录都以冒号隔开. 例如我们执
行一个可执行程序xx,系统就会到这些目录下面去找,在这些目录下找到的话才执行,找不到的话就不执行.


2.:USER:使用者信息



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


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




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


export设置一个新的环境变量


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



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

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


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

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


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

问你你会把钥匙锁到房间里面吗? 如果万一这个路径被修改了找不到了,那么你都没有办法把它改回来了,怎么可能会这样设计,export肯定不会和

普通的命令放在同一个路径.继续,然后我们发现当我把路径加回来以后shell又重新恢复了生机. 我们来好好体会一下环境变量.


unset删除一个环境变量


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




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


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

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




子bash中的环境变量


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




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



看子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就相当于析构函数.