歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

linux環境變量,bashrc與bashprofile

執行順序為:/etc/profile -> (~/.bash_profile |~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc ->~/.bash_logout

關於各個文件的作用域,在網上找到了以下說明:(1)/etc/profile:此文件為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行,並從/etc/profile.d目錄的配置文件中搜集shell的設置。

(2)/etc/bashrc:為每一個運行bashshell的用戶執行此文件。當bashshell被打開時,該文件被讀取。

(3)~/.bash_profile:每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,他設置一些環境變量,執行用戶的.bashrc文件。

(4)~/.bashrc:該文件包含專用於你的bashshell的bash信息,當登錄時以及每次打開新的shell時,該該文件被讀取。

(5)~/.bash_logout:當每次退出系統(退出bashshell)時,執行該文件;另外,/etc/profile中設定的變量(全局)的可以作用於任何用戶,而~/.bashrc等中設定的變量(局部)只能繼承/etc/profile中的變量,他們是"父子"關系。

~/.bash_profile是交互式、login方式進入

bash 運行的

~/.bashrc 是交互式non-login 方式進入

bash運行的通常二者設置大致相同,所以通常前者會調用後者。

/etc/profile和/etc/environment等各種環境變量設置文件的用處先將exportLANG=zh_CN加入/etc/profile,退出系統重新登錄,登錄提示顯示英文。

將/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,再讀取文件/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

當在Linux、Unix和Mac OSX下工作時,我總是我總是忘記要修改哪個bash配置文件來設置shell的PATH和其他的環境變量。是應該修改在home目錄下的.bash_profile還是.bashrc文件?

你可以修改任意一個文件,當其中文件不存在的時候你也可以創建它們。但是他們為什麼是兩個文件?它們的區別是什麼?

參考bash 手冊,執行.bash_profile是為了登錄shell的,但.bashrc是一個交互式的非登錄shells。

那什麼是登錄或非登錄shell呢?

當你或者在機器前,或者在遠程通過ssh,通過控制台進行登錄(輸入用戶名和密碼):在初始化命令行提示符的時候會執行.bash_profile來配置你的shell環境。但是如果你已經登錄到機器,你在Gnome或者是KDE也開了一個新的終端窗口(xterm),這時,.bashrc會在窗口命令行提示符出現前被執行。當你在終端敲入/bin/bash時.bashrc也會在這個新的bash實例啟動的時候執行。

那為什麼有兩個不同的文件呢?

比方說,你想字在每次登錄時打印一些關於你機器的很長的診斷信息,比如平均負載,內存使用情況,當前用戶,等等。你只希望在登錄的時候看到它們,所以你只需要把這些放在.bash_profile中。如果你放在.bashrc中,你會在每次打開一個新的終端窗口時看見這些信息。Mac OSX除外。

Mac OSX的終端窗口是個例外。每個終端窗口在打開的時候都會執行登錄shell即.bash_profile代替了.bashrc。其他的GUI終端仿真器到做的相同,但大多數情況下不這樣做。

建議

大多數的時候你不想維護兩個獨立的配置文件,一個登錄的一個非登錄的shell。當你設置PATH時,你想在兩個文件都適用。可以在.bash_profile中調用.bashrc,然後將PATH和其他通用的設置放到.bashrc中。

要做到這幾點,添加以下幾行到.bash_profile中:

if [ -f ~/.bashrc ]

Copyright © Linux教程網 All Rights Reserved