先將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 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
. /bashrc
fi

所以,~/.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等待配置文件

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 /etc/bash.bashrc :為每一個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取.
 
~/.bashrc:該文件包含專用於你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該該文件被讀取。