Linux环境变量

来源:互联网 发布:软件开发包 编辑:程序博客网 时间:2024/04/30 14:13

一、什么是环境变量??? 
环境变量是在操作系统中具有一个特定名字的对象,它包含了一个或多个应用程序所将要使用到的信息。环境变量相当于给系统或用户应用程序设置的一些参数,具体什么作用这当然和具体的环境变量有关。

二、Linux下的环境变量 
linux是一个多用户的操作系统,每个用户登录系统之后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认的环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。 
在linux中,环境变量一般用大写加下划线命名。环境变量就相当于一个指针,当我们要查看指针所指向的值的时候需要解引用,同样的,当我们要想查看环境变量里面的值的时候,需要在前面加$引用。 
linux的变量分为环境变量和本地变量: 
环境变量:是一种全局变量,存在所有的shell中,在登录的时候就有系统定义的环境变量了。linux的环境变量具有继承性,即shell会继承父shell的环境变量。 
本地变量:当前shell中的变量,本地变量中包含环境变量。linux的本地变量的非环境变量不具备继承性。 
在linux下面的变量按照生存周期可分为两类: 
1、永久的:需要修改配置文件,变量永久的生效。 
2、临时的:使用export命令声明即可,变量在关闭shell时失效。

三、常见的环境变量 
1、PATH:指定命令的搜索路径。 
这里写图片描述 
我们可以看到,在当前目录下,默认的PATH的值。它表示当我们在当前目录下执行一条命令时命令的搜索路径。每一个目录都是以冒号隔开的。例如,当我们执行一个可执行程序是,系统就会到这些目录下面去找,在这些目录下找到的话才执行,找不到的话就不执行。

2、HOME:指定用户的主工作目录(即用户登录到Linux系统时,默认的目录)

2.1普通用户下的主工作目录: 
这里写图片描述

2.2root下的主工作目录: 
这里写图片描述 
可以看到,环境变量是一个变量,随着用户的不同,它的值也就不同。

3、HISTSIZE:保存历史命令记录的条数 
在linux中可以查找以前输入的命令,HISTSIZE这个环境的值就表示最多保存的记录的数目。 
这里写图片描述 
可以看到,上面显示能够保存1000条。

4、LOGNAME:显示当前用户的登录名 
这里写图片描述 
我是用admin这个用户登录的。

这里写图片描述 
可以看到,在root权限下仍然是显示登录用户是admin。

5、HOSTNAME:指主机的名字,应用程序要是用到主机名的话就是从这个变量中获取的。 
这里写图片描述 
可以看到,我的主机的名字是bogon。

6、SHELL:指当前用户使用的是那种Shell。 
这里写图片描述 
可以看到,当前用户使用的是/bin/bash。

7、LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。 
这里写图片描述 
可以看到,当前环境下使用的编码集是UTF-8,它表示支持中文输入,因为我装了中文输入法。

8、MALL:指当前的用户邮件存放的目录。 
这里写图片描述 
在当前用户下,邮件存放的目录如上图。

9、PS1:命令基本提示符,对root是#,对普通用户是$。 
这里写图片描述

10、PS2:附属提示符,默认是”>”。 
这里写图片描述

注意:上述变量的名字并不是固定的。

三、修改和查看环境变量的命令 
1、echo:用于显示某个环境变量的值。

2、env:显示所有环境变量。 
这里写图片描述 
上面只截了一部分,可以看到这里面就有我们之前提到的SHELL。

3、set:显示本地定义的shell变量。 
这里写图片描述 
这个也只是截取了一部分。

4、export:设置一个新的环境变量。 
4.1注意,一般环境变量都用大写加下划线来命名。 
这里写图片描述 
可以看到,当没创建环境变量MY_ENV之前,echo查看的操作失败了。当创建环境变量并给他赋值hello的时候,再次echo查看MY_ENV的话会显示出hello。

4.2 可以看到,第四行显示当前所在的路径。第七行显示当前目录下的所有文件。第八行清除掉PATH这个环境变量。第九行查看PATH失败。第十一行在ls的话也会失败,这时因为PATH这个环境变量没有了,系统这不到这个目录,所以执行失败。第十三行又将PATH恢复回来。第十五行ls就会成功了,因为这时候PATH中有/home/admin这个目录了。 
这里写图片描述

5、unset:清除环境变量 
这里写图片描述 
紧接着上面,又将MY_ENV清除掉了,这时候再echo的话又会失败。

6、readonly:设置只读环境变量 
这里写图片描述 
创建一个只读的环境变量MY_ENV,不能再对它进行修改了。因为这是一个临时性的环境变量,所以在用户退出登录以后会自动失效。

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

1、/etc/profile: 
这个文件是每个用户登录时都会运行的环境变量设置,当用户第一次登录时该文件被执行,并从/ect/profile.d目录的配置文件中搜索shell的设置。这个文件的作用就是当用户登录的时候用于获取系统的环境变量,只在登陆的时候获取一次。

2、/ect/bashrc: 
在执行完/etc/profile内容后,如果用户运行bash shell的话,则就执行这个文件。当每次一个新的bash shell被打开时,该文件被读取。所以,如果想每打开一个bash都执行某些操作,就可以在这个文件里面设置。

3、~/.bash_profile: 
每个用户都可以使用该文件输入自己专用的shell信息,当用户登录时,该文件仅仅被执行一次。默认情况下,他设置一些环境变量,执行用户的.bashrc文件。单个用户对于此文件的修改只会影响到他以后的每一次登录。

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

6、~/.bash_logout: 
每次在退出shell的时候会执行该文件。它提供了定制用户环境的功能,比如删除账号内的临时文件等命令就可以放在bash_logout文件内。如果这个文件不存在的话则就执行其他的命令。

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

这里写图片描述

来自:http://blog.csdn.net/lf_2016/article/details/53843580

0 0
原创粉丝点击