bashrc與profile的差別
bashrc與profile的差別,首先要弄明白什麼是互動式shell和非互動式shell,什麼是login shell 和non-login shell。
互動式模式就是shell等待你的輸入,并且執行你送出的指令。這種模式被稱作互動式是因為shell與使用者進行互動。這種模式也是大多數使用者非常熟悉的:登入、執行一些指令、簽退。當你簽退後,shell也終止了。 shell也可以運作在另外一種模式:非互動式模式。在這種模式下,shell不與你進行互動,而是讀取存放在檔案中的指令,并且執行它們。當它讀到檔案的結尾,shell也就終止了。
bashrc與profile都用于儲存使用者的環境資訊,bashrc用于互動式non-loginshell,而profile用于互動式login shell。系統中存在許多bashrc和profile檔案,下面逐一介紹:
/etc/pro此檔案為系統的每個使用者設定環境資訊,當第一個使用者登入時,該檔案被執行.
并從/etc/profile.d目錄的配置檔案中搜集shell的設定.
/etc/bashrc:為每一個運作bash shell的使用者執行此檔案.當bash shell被打開時,該檔案被讀取。有些linux版本中的/etc目錄下已經沒有了bashrc檔案。
~/. pro每個使用者都可使用該檔案輸入專用于自己使用的shell資訊,當使用者登入時,該
檔案僅僅執行一次!預設情況下,它設定一些環境變量,然後執行使用者的.bashrc檔案.
~/.bashrc:該檔案包含專用于某個使用者的bash shell的bash資訊,當該使用者登入時以及每次打開新的shell時,該檔案被讀取.
另外,/etc/profile中設定的變量(全局)的可以作用于任何使用者,而~/.bashrc等中設定的變量(局部)隻能繼承/etc/profile中的變量,他們是"父子"關系.
總結:
/etc/profile,/etc/bashrc 是系統全局環境變量設定
~/.profile,~/.bashrc使用者家目錄下的私有環境變量設定
當登入系統時候獲得一個shell程序時,其讀取環境設定檔有三步
1首先讀入的是全局環境變量設定檔/etc/profile,然後根據其内容讀取額外的設定的文檔,如
/etc/profile.d和/etc/inputrc
2然後根據不同使用者帳号,去其家目錄讀取~/.bash_profile,如果這讀取不了就讀取~/.bash_login,這個也讀取不了才會讀取
~/.profile,這三個文檔設定基本上是一樣的,讀取有優先關系
3然後在根據使用者帳号讀取~/.bashrc
至于~/.profile與~/.bashrc的不差別
都具有個性化定制功能
~/.profile可以設定本使用者專有的路徑,環境變量,等,它隻能登入的時候執行一次
~/.bashrc也是某使用者專有設定文檔,可以設定路徑,指令别名,每次shell script的執行都會使用它一次
【環境變量配置的三個方法】
如想将一個路徑加入到$PATH中,可以像下面這樣做:
1. 控制台中,不贊成使用這種方法,因為換個shell,你的設定就無效了,是以這種方法僅僅是臨時使用,以後要使用的時候又要重新設定,比較麻煩。 這個隻針對特定的shell;
$ PATH="$PATH:/my_new_path" (關閉shell,會還原PATH)
2. 修改/etc/profile檔案,如果你的計算機僅僅作為開發使用時推薦使用這種方法,因為所有使用者的shell都有權使用這些環境變量,可能會給系統帶來安全性問題。(JDK配置推薦)
這裡是針對所有的使用者的,所有的shell;
$ vi /etc/profile 在裡面加入:
export PATH="$PATH:/my_new_path"
3. 修改.bashrc檔案,這種方法更為安全,它可以把使用這些環境變量的權限控制到使用者級别,這裡是針對某一個特定的使用者,如果你需要給某個使用者權限使用這些環境變量,你隻需要修改其個人使用者主目錄下的.bashrc檔案就可以了。
$ vi /root/.bashrc 在裡面加入:
export PATH="$PATH:/my_new_path"
後兩種方法一般需要重新登出系統才能生效(可以直接使用$ source ~/.profile重新整理來避免重新開機),最後可以通過echo指令測試一下: $ echo $PATH 輸出已經是新路徑了。