序言:
1.环境变量是操作系统环境设置的变量,适用于整个系统的用户进程;
2.环境变量可以在命令中设置,并且用户注销的时侯将会遗失这种设置值;
3.若要重复适用,则最好在.profile中定义;环境变量的使用与本地变量的使用方式相同,
4.并且在使用之前,必须用export命令导入。
一、环境变量文件介绍
Linux中环境变量包括系统级和用户级,系统级的环境变量是每位登陆到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量,所以管理环境变量的文件也分为系统级和用户级的。
二、Linux的变量种类
按变量的生存周期来界定,Linux变量可分为两类:
1.永久的:须要更改配置文件,变量永久生效
2.临时的:使用export命令申明即可,变量在关掉shell时失效
三、Linux环境变量文件
linux变量文件有/etc/environment或/etc/profile或~/.profile或/etc/bash.bashrc或~/.bashrc,以及~/.bash_profile(通常是用户在自己目录下新建的),~/.bash_logout.
系统级:
1./etc/environment:是系统在登陆时读取的第一个文件,该文件设置的是整个系统的环境,只要启动系统才会读取该文件redhat linux下载,用于为所有进程设置环境变量。系统使用此文件时并不是执行此文件中的命令,而是按照而是按照KEY=VALUE模式的代码,对KEY形参以VALUE,因而文件中假如要定义PATH环境变量,只需加入一行形如PATH=$PATH:/xxx/bin的代码即可
2./etc/profile:此文件是系统登陆时执行的第二个文件。为系统的每位用户设置环境信息,当用户第一次登陆时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。(/etc/profile可以用于设定针对全系统所有用户的环境变量,环境变量周期是永久性)
3./etc/bashrc:是针对所有用户的bash初始化文件,在此中设定的环境变量将应用于所有用户的shell中,此文件会在用户每次打开shell时执行一次。(即每次新开一个终端,就会执行/etc/bashrc)。
用户级(这种文件处于家目录下):
1.~/.profile:对应当前登入用户的profile文件,用于订制当前用户的个人工作环境(变量是永久性),每位用户都可使用该文件输入专用于自己使用的shell信息,当用户登入时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。这儿是推荐放置个人设置的地方
2.~/.bashrc:该文件包含专用于你的bashshell的bash信息,当登陆时以及每次打开新的shell时,该文件被读取。(~/.bashrc只针对当前用户,变量的生命周期是永久的)
不推荐放在这里,由于每开一个shell,这个文件会读取一次在linux系统,默认的shell是什么,效率肯定有影响。
3.~/.bash_profileor~./bash_login:~/.bash_profile是交互式login形式步入bash运行的,~/.bashrc是交互式non-login形式步入bash运行的一般两者设置大致相同,所以一般后者会调用前者。每位用户都可使用该文件输入专用于自己使用的shell信息,当用户登入时,该文件仅仅执行一次。默认情况下,他设置一些环境变量,执行用户的.bashrc文件。(假如~/目录下没有.bash_profile则新构建一个)这儿是推荐放置个人设置的地方
当一个shell关掉时,在bash_profile中定义的系统变量则会失效。为此,每打开一个新的shell时都要运行一次sourcebash_profile.并且针对当前用户。
4.~/.pam_environment:用户级的环境变量设置文件,没有做测试,不晓得管不管用。
5.~/.bash_logout:当每次退出系统(退出bashshell)时,执行该文件。另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能承继/etc/profile中的变量,她们是"母子"关系。
四、Linux环境变量文件执行次序
1.在登陆Linux时要执行文件的过程如下:
在刚登陆Linux时在linux系统,默认的shell是什么,
首先启动/etc/profile文件,
之后再启动用户目录下的~/.bash_profile、~/.bash_login或~/.profile文件中的其中一个,用房主目录下文件的执行的次序为:
~/.bash_profile->~/.bash_login->~/.profile。
假如~/.bash_profile文件存在的话,通常都会执行~/.bashrc文件。
由于在~/.bash_profile文件中通常会有下边的代码:
if [ -f ~/.bashrc ] ; then . ./bashrc fi
登录后复制
~/.bashrc中,通常都会有以下代码:
if [ -f /etc/bashrc ] ; then . /etc/bashrc fi
登录后复制
所以,~/.bashrc会调用/etc/bashrc文件。最后,在退出shell时,就会执行~/.bash_logout文件。
执行次序为:/etc/profile->(~/.bash_profile|~/.bash_login|~/.profile)->~/.bashrc->/etc/bashrc->~/.bash_logout
/etc/profile和/etc/environment等各类环境变量设置文件的好处
1)先将exportLANG=zh_CN加入/etc/profile,退出系统重新登陆,登陆提示显示中文。
2)先将/etc/profile中的exportLANG=zh_CN删掉,将LNAG=zh_CN加入/etc/environment,退出系统重新登陆,登陆提示显示英文。
用户环境完善的过程中总是先执行/etc/profile,之后再读取/etc/environment。
为何会有如上所叙的不同呢?而不是先执行/etc/environment,后执行/etc/profile呢?
这是由于:/etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,后者与登入用户无关,前者与登入用户有关。
系统应用程序的执行与用户环境可以是无关的,但与系统环境是相关的,所以当你登入时,你看见的提示信息,如日期、时间信息的显示格式与系统环境的LANG是相关的,缺省LANG=en_US,假若系统环境LANG=zh_CN,则提示信息是英文的,否则是英语的。
对于用户的shell初始化而言是先执行/etc/profile中标麒麟linux,再读取文件/etc/environment;对整个系统而言是先执行/etc/environment。这样理解正确吗?
登录系统时的次序应当是:
/etc/enviroment-->/etc/profile-->HOME/.profile−−>HOME/.env(假如存在)
/etc/profile是所有用户的环境变量
/etc/enviroment是系统的环境变量
登录系统时shell读取的次序应当是:
/etc/profile->/etc/enviroment-->HOME/.profile−−>HOME/.env
缘由应当是用户环境和系统环境的区别了,若果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不同的值,那应当是以用户环境为准了。
五、Linux中常见的环境变量及其作用
Linux中常见的环境变量有:
1.PATH:指定命令的搜索路径
2.HOME:指定用户的主工作目录(即用户登录到Linux系统中时,默认的目录)
3.HISTSIZE:指保存历史命令记录的条数。
4.LOGNAME:指当前用户的登陆名。
5.HOSTNAME:指主机的名称,许多应用程序假如要用到主机名的话,一般是从这个环境变量中来取得的。
6.SHELL:指当前用户用的是哪种Shell。
7.LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以更改此环境变量。
8.MAIL:指当前用户的电邮储存目录。
9.PS1:命令基本提示符,对于root用户是#,对于普通用户是$。
10.PS2:附属提示符,默认是“>”。
备注:可以通过更改此环境变量来更改当前的命令符,例如下述命令会将提示符更改成字符串“Hello,MyNewPrompt”。
#PS1="Hello,MyNewPrompt"
注意:上述变量的名子并不固定,如HOSTNAME在个别Linux系统中可能设置成HOST
其实,我所列出的上述环境变量并非用尽列举!
Linux也提供了更改和查看环境变量的命令!下边通过几个实例来说明:
1.echo显示某个环境变量值echo$PATH
2.export设置一个新的环境变量exportHELLO="hello"(可以无顿号),在shell的命令行下直接使用[export变量名=变量值]定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关掉了,变量也就失效了,再打开新shell时就没有这个变量,须要使用的话还须要重新定义。
3.env显示所有环境变量
4.set显示本地定义(系统中早已存在)的shell变量以及设置shell变量的新变量值,倘若未指定值,则该变量值将被设为NULL。
5.unset清理环境变量unsetHELLO
6.readonly设置只读环境变量readonlyHELLO,假如使用了readonly命令的话,变量就不可以被更改或清不仅
以上就是Linux中环境变量的使用方法相同的生存周期来划分的详细内容,更多请关注其它相关文章!