环境变量etc中environmentenvprofile设置及区别
(转载⾃
hi.baidu/bazhaohua/blog/item/94bdd02e014833341e308974.html,blog.csdn/adparking/archive/2010/06/29/5701764.aspx,纯粹为学习⽽整理)
经过我查看资料以后我发现我的environment⾥⾯设置了三个变量path,classpath,和javahome。那么系统总是先启动environment在查看profile 那么,我在这⾥添加的就要照应environment的变量了,javahome不⽤设定了,两个⽂件是⼀样的,那么其他的不是很全要设定⼀下。为什么不在environment⾥⾯全部设定完毕呢?应为他是系统的,设定很多没必要,可能还会引发启动问题,起不了机器呢,⼀般不要改。但是⼜不能总是⼀打开及其就export path=“……”,很⿇烦,那么就在系统⾃动调⽤proflie时设置把。需要重新启动系统才能⽣效。在shell中查看env,直接设置path 然后再查看发现变了,但是关了这个shell在打开⼀个还是原来那样。所以阿,env只是对当前shell有效,启动shell他会查看usr/bin/env。但是只限于shell.如果在profile中写了export语句他就会⾃动设置给env,那么我们打开哪个shell他们的env也就是PATH……值也都是⼀样的。在profile⾥设置环境变量是在etc/environment的前提下添加的
#/etc/environment(系统环境)中的:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/jdk1.6.0_18/bin"
CLASSPATH=.:/usr/lib/jvm/jdk1.6.0_18/lib
JAVA_HOME=/usr/lib/jvm/jdk1.6.0_18
#/etc/profile(⽤户环境)中的:
export PATH=$PATH:$JRE_HOME/bin
export CLASSPATH=$CLASSPATH:/usr/lib/jvm/jdk1.6.0_18/jre/lib
export JRE_HOME=/usr/lib/jvm/jdk1.6.0_18/jre
export CATALINA_HOME="/usr/local/tomcat"
#env(⽤户环境,全部信息)中的:
CLASSPATH=.:/usr/lib/jvm/jdk1.6.0_18/lib:/usr/lib/jvm/jdk1.6.0_18/jre/lib
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/jdk1.6.0_18/bin:/usr/lib/jvm/jdk1.6.0_18/jre/bin
JAVA_HOME=/usr/lib/jvm/jdk1.6.0_18
JRE_HOME=/usr/lib/jvm/jdk1.6.0_18/jre
CATALINA_HOME=/usr/local/tomcat
将export LANG=zh_CN加⼊/etc/profile ,退出系统重新登录,登录提⽰显⽰英⽂。将/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/.pro
file -->$HOME/.env (如果存在)
/etc/profile 是所有⽤户的环境变量
/etc/enviroment是系统的环境变量
登陆系统时shell读取的顺序应该是
/etc/profile ->/etc/enviroment -->$HOME/.profile -->$HOME/.env
原因应该是jtw所说的⽤户环境和系统环境的区别了
如果同⼀个变量在⽤户环境(/etc/profile)和系统环境(/etc/environment) 有不同的值那应该是以⽤户环境为准了。
(1)/etc/profile:此⽂件为系统的每个⽤户设置环境信息,当⽤户第⼀次登录时,该⽂件被执⾏. 并从/etc/profile.d⽬录的配置⽂件中搜集shell的设置。
(2)/etc /bashrc: 为每⼀个运⾏bash shell的⽤户执⾏此⽂件.当bash shell被打开时,该⽂件被读取。
(3)~/.bash_profile: 每个⽤户都可使⽤该⽂件输⼊专⽤于⾃⼰使⽤的shell信息,当⽤户登录时,该⽂件仅仅执⾏⼀次!默认情况下,他设置⼀些环境变量,执⾏⽤户的.bashrc⽂件。
(4)~/.bashrc: 该⽂件包含专⽤于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该⽂件被读取。
(5) ~/.bash_logout:当每次退出系统(退出bash shell)时,执⾏该⽂件.
另外,/etc/profile中设定的变量(全局)的可以作⽤于任何⽤户,⽽~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"⽗⼦"关系。(6)~/.bash_profile 是交互式、login ⽅式进⼊ bash 运⾏的~/.bashrc 是交互式 non-login ⽅式进⼊ bash 运⾏的通常⼆者设置⼤致相同,所以通常前者会调⽤后者。
通过⽐较最后发现,在ubuntu下配置java运⾏环境时,所做的设置代表的意义了。
$ sudo vim /etc/profile
在⽂件最后添加
#set java environment
JAVA_HOME=/opt/jdk1.6.0_07
export JRE_HOME=/opt/jdk1.6.0_07/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
最后wq!
备注:在shell中执⾏程序时,shell会提供⼀组环境变量。export可新增,修改或删除环境变量,供后续执⾏的程序使⽤。export的效⼒仅及于该此登陆操作。
>>>>>>>>>>>>>##
在登录Linux时要执⾏⽂件的过程如下:在刚登录Linux时,⾸先启动 /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 . /bashrcfi所以,~/.bashrc会调⽤ /etc/bashrc⽂件。最后,在退出shell时,还会执⾏
~/.bash_logout⽂件。执⾏顺序为:/etc /profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout
>>>>>>>>>>>>>
1.登录shell
所谓登录shell,指的是当⽤户登录系统时所取的那个  shell。登录shell属于交互式shell。
登录shell将查4个不同的启动⽂件来处理其中的命令。 bash shell处理⽂件的顺序如下:
1: /etc/profile
2:/etc/profile.d等待配置⽂件
java配置用户变量
3: $HOME/.bash_profile
4: $HOME/.bash_login
5 $HOME/.profile
/etc /profile是bash shell在系统上的主默认启动⽂件,系统上每⼀个⽤户在登陆时都将执⾏此⽂件。
通过设置这个⽂件,
超级⽤户可以为全系统内的所有bash⽤户建⽴默认特征。不同 Linux版本在此⽂件放置的命令不尽相同,
在redflag中,该⽂件设置了⼏个重要的变量,
如:PATH USER LOGNAME MAIL HOSTNAME HISTSIZE  INPUTRC,详情可以查看具体的⽂件。
其余3个⽂件具备相同的功能——提供特定于⽤户的启动⽂件。⼤多数Linux版本只使⽤其中之⼀。如:RedFlag使⽤.bash_profile  ubuntu使⽤.profile .
shell 依次查~/.bash_profile、
~/.bash_login、
~/.profile(~是⽤户主⽬录的速记符),
并执⾏它到的⾸个⽂件中的命令。
可以将命令放置在这些⽂件中以覆盖掉/etc /profile⽂件中的默认设置。
也就是后⾯的⽂件可以覆盖或者修改前⾯的设置。
2. 交互式⾮登录shell
如果启动了⼀个bash shell⽽没有等录系统(如在CLI提⽰符中键⼊bash),
则启动了⼀个交互式⾮登录shell.
⽽登录shell的初始化⽂件(⽐如.bash_profile)通常会运⾏这个⽂件。这样,登录shell和⾮登录shell都可以使⽤.bashrc中的命令。
如以X Window环境登录Linux时,在X环境所起动的终端,那些shell都是⾮登录shell.
在交互式⾮登录shell中并不执⾏前⾯提到的初始化⽂件中的命令。然⽽,交互式⾮登录shell从登录shell继承了由这些初始化⽂件设置的 shell变量。
(1) $HOME/.bashrc
交互式⾮登录shell执⾏~/.bashrc⽂件中的命令.在每次执⾏shell脚本时,都会重新读取这个⽂件,所以是最完整的。
但是万事都不是⼀样的,debain系列的是不同的,如ubuntu
/etc/profile-->/etc/environment-->$HOME/.profile
Ubuntu Linux系统环境变量配置⽂件介绍在Ubuntu中有如下⼏个⽂件可以设置环境变量
/etc/profile:在登录时,操作系统定制⽤户环境时使⽤的第⼀个⽂件 ,此⽂件为系统的每个⽤户设置环境信息,当⽤户第⼀次登录时,该⽂件被执⾏。
/etc /environment:在登录时操作系统使⽤的第⼆个⽂件, 系统在读取你⾃⼰的profile前,设置环境⽂件的环境变量。
~
/.profile: 在登录时⽤到的第三个⽂件是.profile⽂件,每个⽤户都可使⽤该⽂件输⼊专⽤于⾃⼰使⽤的shell信息,当⽤户登录时,该⽂件仅仅执⾏⼀次!默认情况下,他设置⼀些环境变量,执⾏⽤户的.bashrc⽂件。
/etc/bashrc:为每⼀个运⾏bash shell的⽤户执⾏此⽂件.当bash shell被打开时,该⽂件被读取.
~/.bashrc:该⽂件包含专⽤于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该⽂件被读取。

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

发表评论