Linux常⽤环境变量及作⽤和环境变量⽂件的详细介绍及其加
载执⾏顺序
前⾔:
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:是系统在登录时读取的第⼀个⽂件,该⽂件设置的是整个系统的环境,只要启动系统就会读取该⽂件,⽤于为所有进程设置环境变量。系统使⽤此⽂件时并不是执⾏此⽂件中的命令,⽽是根据⽽是根据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:该⽂件包含专⽤于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该⽂件被读取。(~/.bashrc只针对当前⽤户,变量的⽣命周期是永久的)
不推荐放到这⼉,因为每开⼀个shell,这个⽂件会读取⼀次,效率肯定有影响。
3.~/.bash_profile or ~./bash_login:~/.bash_profile是交互式login ⽅式进⼊ bash 运⾏的,~/.bashrc 是交互式 non-login ⽅式进⼊bash 运⾏的通常⼆者设置⼤致相同,所以通常前者会调⽤后者。每个⽤户都可使⽤该⽂件输⼊专⽤于⾃⼰使⽤的shell信息,当⽤户登录时,该⽂件仅仅执⾏⼀次。默认情况下,
他设置⼀些环境变量,执⾏⽤户的.bashrc⽂件。(如果~/⽬录下没有.bash_profile则新建⽴⼀这⾥是推荐放置个⼈设置的地⽅
个)这⾥是推荐放置个⼈设置的地⽅
当⼀个shell关闭时,在bash_profile中定义的系统变量则会失效。因此,每打开⼀个新的shell时都要运⾏⼀次source bash_profile.⽽且针对当前⽤户。
4.~/.pam_environment:⽤户级的环境变量设置⽂件,没有做测试,不知道管不管⽤。
5.~/.bash_logout:当每次退出系统(退出bash shell)时,执⾏该⽂件。另外,/etc/profile中设定的变量(全局)的可以作⽤于任何⽤户,⽽~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"⽗⼦"关系。
Linux 环境变量⽂件执⾏顺序
四、Linux 环境变量⽂件执⾏顺序
1. 在登录Linux时要执⾏⽂件的过程如下:
在刚登录Linux时,
⾸先启动 /etc/profile ⽂件,
然后再启动⽤户⽬录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile⽂件中的其中⼀个,⽤户主⽬录下⽂件的执⾏的顺序为:
          ~/.bash_profile -> ~/.bash_login -> ~/.profile。
如果 ~/.bash_profile⽂件存在的话,⼀般还会执⾏ ~/.bashrc⽂件。
因为在 ~/.bash_profile⽂件中⼀般会有下⾯的代码:
if [ -f ~/.bashrc ] ; then
. ./bashrc
环境变量path误删有影响吗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)先将export LANG=zh_CN加⼊/etc/profile,退出系统重新登录,登录提⽰显⽰英⽂。
2)先将/etc/profile 中的export LANG=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,再读取⽂件/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,My NewPrompt"
注意:上述变量的名字并不固定,如HOSTNAME在某些Linux系统中可能设置成HOST
当然,我所列举的上述环境变量并⾮穷尽列出!
Linux也提供了修改和查看环境变量的命令!下⾯通过⼏个实例来说明:
4.set 显⽰本地定义(系统中已经存在)的shell变量以及设置shell变量的新变量值,如果未指定值,则该变量值将被设为NULL。
5.unset 清除环境变量 unset HELLO

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。