Linux的環境變量.bash_profile .bashrc profile文件


Shell變量有局部變量、環境變量之分。局部變量就是指在某個Shell中生效的變量,只在此次登錄中有效。環境變量通常又稱“全局變量”,雖然在Shell中變量默認就是全局的,但是為了讓子Shall繼承當前Shell的變量,需要使用export內建命令將其導出為環境變量。

一、linux系統變量的類型

 

按變量的生存周期划分:

 

永久的:需要修改配置文件,變量永久生效。
臨時的:使用export命令聲明即可,變量在關閉shell時失效。

 

 

在配置永久的環境變量時,又可以按照作用范圍分為:

用戶環境變量
系統環境變量。
系統環境變量對所有系統用戶都有效,用戶環境變量僅僅對當前的用戶有效。

 

二、設置環境變量

1. 直接運行export命令定義變量
       在shell的命令行下直接使用[export 變量名=變量值] 定義變量。該變量只在當前的shell(BASH)或其子shell(BASH)下是有效的,shell關閉了,變量也就失效了,再打開新shell時就沒有這個變量,需要使用的話還需要重新定義。

 

2. 修改系統環境變量
系統環境變量一般保存在下面的文件中

/etc/profile

全局(公有)配置,不管是哪個用戶,登錄時都會讀取該文件。

 

/etc/bash.bashrc

它也是全局(公有)的 bash執行時,不管是何種方式,都會讀取此文件。

 

 

 

/etc/environment

 

不要輕易修改此文件

3. 修改用戶環境變量

用戶環境變量通常被存儲在下面的文件中:

 

 

~/.profile

 

若bash是以login方式執行時,讀取~/.bash_profile,若它不存在,則讀取~/.bash_login,若前兩者不存在,讀取~/.profile。

 

~/.bash_profile 或者~./bash_login

若bash是以login方式執行時,讀取~/.bash_profile,若它不存,則讀取~/.bash_login,若前兩者不存在,讀取 ~/.profile。
只有bash是以login形式執行時,才會讀取.bash_profile,Unbutu默認沒有此文件,可新建。 通常該配置文件還會配置成去讀取~/.bashrc。

 

~/.bashrc

當bash是以non-login形式執行時,讀取此文件。若是以login形式執行,則不會讀取此文件。

 

~/.bash_profile是交互式、login 方式進入 bash 運行的 
~/.bashrc 是交互式 non-login 方式進入 bash 運行的通常二者設置大致相同,所以通常前者會調用后者。

 

4. 修改環境變量配置文件

如想將一個路徑加入到環境變量(例如$PATH)中,可以像下面這樣做(修改/etc/profile): 
sudo vi /etc/profile 
以環境變量PATH為例子,環境變量的聲明格式:

 

 

PATH=$PATH:PATH_1:PATH_2:PATH_3:------:PATH_N export PATH

 

你可以自己加上指定的路徑,中間用冒號隔開。環境變量更改后,在用戶下次登陸時生效,如果想立刻生效,則可執行下面的語句:

 

 

$source /etc/profile

 

 

三、環境配置文件的區別

1. profile、 bashrc、.bash_profile、 .bashrc介紹

bash會在用戶登錄時,讀取下列四個環境配置文件:

全局環境變量設置文件:/etc/profile、/etc/bashrc。 用戶環境變量設置文件:~/.bash_profile、~/.bashrc。

讀取順序:① /etc/profile、② ~/.bash_profile、③ ~/.bashrc、④ /etc/bashrc。

① /etc/profile:此文件為系統的每個用戶設置環境信息,系統中每個用戶登錄時都要執行這個腳本,如果系統管理員希望某個設置對所有用戶都生效,可以寫在這個腳本里,該文件也會從/etc/profile.d目錄中的配置文件中搜集shell的設置。 ② ~/.bash_profile:每個用戶都可使用該文件設置專用於自己的shell信息,當用戶登錄時,該文件僅執行一次。默認情況下,他設置一些環境變量,執行用戶的.bashrc文件。 ③ ~/.bashrc:該文件包含專用於自己的shell信息,當登錄時以及每次打開新shell時,該文件被讀取。 ④ /etc/bashrc:為每一個運行bash shell的用戶執行此文件,當bash shell被打開時,該文件被讀取。

 


2 .bashrc和.bash_profile的區別

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

3. 建議
       大多數的時候你不想維護兩個獨立的配置文件,一個登錄的一個非登錄的shell。當你設置PATH時,你想在兩個文件都適用。可以在.bash_profile中調用.bashrc,然后將PATH和其他通用的設置放到.bashrc中。
       要做到這幾點,添加以下幾行到.bash_profile中:

if [ -f ~/.bashrc ]; then . ~/.bashrc fi

 現在,當你從控制台登錄機器的時候,.bashrc就會被執行。

四、常用的環境變量
BASH Bash Shell的全路徑
CDPATH       用於快速進入某個目錄。
PATH       決定了shell將到哪些目錄中尋找命令或程序
HOME       當前用戶主目錄
HISTSIZE       歷史記錄數
LOGNAME       當前用戶的登錄名
HOSTNAME       指主機的名稱
SHELL       當前用戶Shell類型
LANGUGE       語言相關的環境變量,多語言可以修改此環境變量
MAIL       當前用戶的郵件存放目錄
PS1       基本提示符,對於root用戶是#,對於普通用戶是$

Reference
[1] /etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc
http://blog.chinaunix.net/uid-26435987-id-3400127.html
[2] Linux如何修改env看到的環境變量? .bashrc和.bash_profile區別
http://blog.csdn.net/xifeijian/article/details/13355031
[3] linux環境變量,bashrc與bashprofile
http://blog.sina.com.cn/s/blog_43e5ad4e0101ei43.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM