profile檀葛、bashrc玩祟、~/.bash_profile腹缩、~/.bashrc、~/.bash_profile之間的區(qū)別和聯(lián)系以及執(zhí)行順序

一空扎、區(qū)別

/etc/profile
# 此文件為系統(tǒng)的每個用戶設(shè)置環(huán)境信息,當(dāng)用戶第一次登錄時,該文件被執(zhí)行.
#并從/etc/profile.d目錄的配置文件中搜集shell的設(shè)置.

/etc/bashrc
#為每一個運行bash shell的用戶執(zhí)行此文件.當(dāng)bash shell被打開時,該文件被讀取.

~/.bash_profile
#每個用戶都可使用該文件輸入專用于自己使用的shell信息,
#當(dāng)用戶登錄時,該文件僅僅執(zhí)行一次!
#默認(rèn)情況下,他設(shè)置一些環(huán)境變量,執(zhí)行用戶的.bashrc文件.

~/.bashrc
#該文件包含專用于你的bash shell的bash信息,當(dāng)?shù)卿洉r以及每次打開新的shell時,該文件被讀取.

~/.profile
#在Debian中使用.profile文件代 替.bash_profile文件藏鹊。
#.profile(由Bourne Shell和Korn Shell使用)和.login(由C Shell使用)兩個文件是.bash_profile的同義詞,
#目的是為了兼容其它Shell转锈。在Debian中使用.profile文件代 替.bash_profile文件盘寡。

~/.bash_logout
#當(dāng)每次退出系統(tǒng)(退出bash shell)時,執(zhí)行該文件. 
/etc/profile
#此文件為系統(tǒng)的每個用戶設(shè)置環(huán)境信息,當(dāng)用戶第一次登錄時,該文件被執(zhí)行.并從/etc/profile.d目錄的配置文件中搜集shell的設(shè)置.

英文描述為:

# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

所以如果你有對/etc/profile有修改的話必須得重啟你的修改才會生效,此修改對每個用戶都生效撮慨。

/etc/bashrc
#為每一個運行bash shell的用戶執(zhí)行此文件.當(dāng)bash shell被打開時,該文件被讀取,每次用戶打開一個終端時竿痰,即執(zhí)行此文件

英文描述為:

# /etc/bashrc

# System wide functions and aliases
# Environment stuff goes in /etc/profile

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

如果你想對所有的使用bash的用戶修改某個配置并在以后打開的bash都生效的話可以修改這個文件,修改這個文件不用重啟砌溺,重新打開一個bash即可生效影涉。

~/.bash_profile
#每個用戶都可使用該文件輸入專用于自己使用的shell信息,當(dāng)用戶登錄時,該文件僅僅執(zhí)行一次!默認(rèn)情況下,他設(shè)置一些環(huán)境變量,執(zhí)行用戶的.bashrc文件.

#此文件類似于/etc/profile,也是需要需要重啟才會生效规伐,/etc/profile對所有用戶生效蟹倾,~/.bash_profile只對當(dāng)前用戶生效。
~/.profile

#### Linux的Shell種類眾多猖闪,常見的有:

Bourne Shell(/usr/bin/sh或/bin/sh)鲜棠、
Bourne Again Shell(/bin/bash)、
C Shell(/usr/bin/csh)培慌、
K Shell(/usr/bin/ksh)豁陆、
Shell for Root(/sbin/sh),等等吵护。


#不同的Shell語言的語法有所不同献联,所以不能交換使用。每種Shell都有其特色之處何址,基本上里逆,掌握其中任何一種 就足夠了。在本文中用爪,我們關(guān)注的重點Bash原押,
#也就是Bourne Again Shell,由于易用和免費偎血,Bash在日常工作中被廣泛使用诸衔;同時盯漂,Bash也是大多數(shù)Linux系統(tǒng)默認(rèn)的Shell。

#在一般情況下笨农,人們并不區(qū)分 Bourne Shell和Bourne Again Shell就缆,所以,在下面的文字中谒亦,我們可以看到#!/bin/sh竭宰,它同樣也可以改為#!/bin/bash。

#由于這層原因在Debian中使用.profile文件代 替.bash_profile文件以兼容不同的shell

.profile(由Bourne Shell和Korn Shell使用)和.login(由C Shell使用)兩個文件是.bash_profile的同義詞份招,目的是為了兼容其它Shell切揭。

~/.bashrc

#該文件包含專用于你的bash shell的bash信息,當(dāng)?shù)卿洉r以及每次打開新的shell時,該文件被讀取.(每個用戶都有一個.bashrc文件,在用戶目錄下)

#此文件類似于/etc/bashrc锁摔,不需要重啟生效廓旬,重新打開一個bash即可生效, /etc/bashrc對所有用戶新打開的bash都生效谐腰,但~/.bashrc只對當(dāng)前用戶新打開的bash生效孕豹。
~/.bash_logout
#當(dāng)每次退出系統(tǒng)(退出bash shell)時,執(zhí)行該文件.

#另外,/etc/profile中設(shè)定的變量(全局)的可以作用于任何用戶,而~/.bashrc等中設(shè)定的變量(局部)只能繼承/etc/profile中的變量,他們是”父子”關(guān)系.
~/.bash_profile 是交互式、login 方式進入bash 運行的十气;
~/.bashrc 是交互式 non-login 方式進入bash 運行的励背;

通常二者設(shè)置大致相同,所以通常前者會調(diào)用后者桦踊。

設(shè)置生效:可以重啟生效椅野,也可以使用命令:source

上 面這三個文件是bash shell的用戶環(huán)境配置文件,位于用戶的主目錄下籍胯。其中.bash_profile是最重要的一個配置文件竟闪,它在用戶每次登錄系統(tǒng)時被讀取,里面的所有 命令都會被bash執(zhí)行杖狼。

.bashrc文件會在bash shell調(diào)用另一個bash shell時讀取炼蛤,也就是在shell中再鍵入bash命令啟動一個新shell時就會去讀該文件。這樣可有效分離登錄和子shell所需的環(huán)境蝶涩。但一般 來說都會在.bash_profile里調(diào)用.bashrc腳本以便統(tǒng)一配置用戶環(huán)境理朋。

.bash_logout在退出shell時被讀取。所以我們可把一些清理工作的命令放到這文件中绿聘。

在 /etc目錄的bash.bashrc和profile是系統(tǒng)級(全局)的配置文件嗽上,當(dāng)在用戶主目錄下找不到.bash_profile 和.bashrc\時,就會讀取這兩個文件熄攘。.bash_history是bash shell的歷史記錄文件兽愤,里面記錄了你在bash shell中輸入的所有命令。可通過HISSIZE環(huán)境變量設(shè)置在歷史記錄文件里保存記錄的條數(shù)浅萧。alias l = ‘ls -l’是設(shè)置別名的語句逐沙,把它放在這些配置文檔中就可使我們能用簡單的’l’命令,代替’ls -l’命令洼畅。

當(dāng)我們修改了這些配置件后吩案,可用source .bash_profile命令使它修改內(nèi)容馬上生效。

執(zhí)行順序

關(guān)于登錄linux時帝簇,/etc/profile徘郭、~/.bash_profile等幾個文件的執(zhí)行過程。
如圖所示己儒,

image.png

其中 ~/.bash_profile崎岂、~/.bash_login捆毫、~/.profile三個文件中往往系統(tǒng)中往往只存在一個闪湾,在不同的發(fā)行版中不同,如CentOS和RedHat中?~/.bash_profile绩卤,而Debian和Ubunto等系列中往往是~/.profile

在登錄Linux時要執(zhí)行文件的過程如下:

①在 剛登錄Linux時途样,

首先啟動 /etc/profile 文件,
然后再啟動用戶目錄下的 ~/.bash_profile濒憋、 ~/.bash_login或 ~/.profile文件中
的其中一個何暇,執(zhí)行的順序為:~/.bash_profile、 ~/.bash_login凛驮、 ~/.profile
以上兩個文件會在用戶登錄時執(zhí)行

②下面開始執(zhí)行用戶的bash設(shè)置

如果 ~/.bash_profile文件存在的話裆站,一般會以這樣的方式執(zhí)行用戶的 ~/.bashrc文件。
在 ~/.bash_profile文件中一般會有下面的代碼:

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

同樣~/.bashrc中黔夭,一般還會在文件的前面有以下代碼宏胯,來執(zhí)行/etc/bashrc

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

所以,~/.bashrc會調(diào)用 /etc/bashrc文件本姥。最后肩袍,在退出shell時,還會執(zhí)行 ~/.bash_logout文件婚惫。

執(zhí)行順序為

/etc/profile  
~/.bash_profile | ~/.bash_login | ~/.profile 
~/.bashrc
/etc/bashrc
~/.bash_logout

為了驗證氛赐,我 做了個實驗,在/etc/profile,/etc/bashrc,/.bashrc和/.bash_profile文件的最后追加同一個變量分別賦 予不同的值先舷,實驗結(jié)果表明變量最后的值為~/.bash_profile里的值艰管。(4個文件都沒有修改其他設(shè)置,都是安裝系統(tǒng)后的默認(rèn)值蒋川。)
再有就是4個文件都追加一個值到同一個文件牲芋,開機后查看該文件內(nèi)容的順序為:

/etc/profile
~/.bash_profile
~/.bashrc
/etc/bashrc

作用域

關(guān)于各個文件的作用域,在網(wǎng)上找到了以下說明:
(1)/etc/profile: 此文件為系統(tǒng)的每個用戶設(shè)置環(huán)境信息,當(dāng)用戶第一次登錄時,該文件被執(zhí)行. 并從/etc/profile.d目錄的配置文件中搜集shell的設(shè)置。

(2)/etc/bashrc: 為每一個運行bash shell的用戶執(zhí)行此文件.當(dāng)bash shell被打開時,該文件被讀取街图。

(3)~/.bash_profile: 每個用戶都可使用該文件輸入專用于自己使用的shell信息,當(dāng)用戶登錄時,該文件僅僅執(zhí)行一次!默認(rèn)情況下,他設(shè)置一些環(huán)境變量,執(zhí)行用戶的.bashrc文件浇衬。

(4)~/.bashrc: 該文件包含專用于你的bash shell的bash信息,當(dāng)?shù)卿洉r以及每次打開新的shell時,該該文件被讀取。

(5)~/.bash_logout: 當(dāng)每次退出系統(tǒng)(退出bash shell)時,執(zhí)行該文件. 另外,/etc/profile中設(shè)定的變量(全局)的可以作用于任何用戶,而~/.bashrc等中設(shè)定的變量(局部)只能繼承/etc /profile中的變量,他們是”父子”關(guān)系餐济。

(6)~/.bash_profile 是交互式耘擂、login 方式進入 bash 運行的~/.bashrc 是交互式 non-login 方式進入 bash 運行的通常二者設(shè)置大致相同,所以通常前者會調(diào)用后者絮姆。

其他

下面是幾個例子:

  1. 圖形模式登錄時醉冤,順序讀取:/etc/profile和~/.profile
  2. 圖形模式登錄后篙悯,打開終端時蚁阳,順序讀取:/etc/bash.bashrc和~/.bashrc
  3. 文本模式登錄時鸽照,順序讀嚷菥琛:/etc/bash.bashrc,/etc/profile和~/.bash_profile
  4. 從其它用戶su到該用戶矮燎,則分兩種情況:
    (1)如果帶-l參數(shù)(或-參數(shù)定血,–login參數(shù)),如:su -l username诞外,則bash是lonin的澜沟,它將順序讀取以下配置文件:/etc/bash.bashrc,/etc/profile和~ /.bash_profile峡谊。
    (2)如果沒有帶-l參數(shù)茫虽,則bash是non-login的,它將順序讀燃让恰:/etc/bash.bashrc和~/.bashrc
  5. 注銷時濒析,或退出su登錄的用戶,如果是longin方式贤壁,那么bash會讀鹊渴唷:~/.bash_logout
  6. 執(zhí)行自定義的shell文件時,若使用“bash -l a.sh”的方式脾拆,則bash會讀取行:/etc/profile和~/.bash_profile馒索,若使用其它方式,如:bash a.sh名船, ./a.sh绰上,sh a.sh(這個不屬于bash shell),則不會讀取上面的任何文件渠驼。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜈块,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌百揭,老刑警劉巖爽哎,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異器一,居然都是意外死亡课锌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門祈秕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渺贤,“玉大人,你說我怎么就攤上這事请毛≈景埃” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵方仿,是天一觀的道長固棚。 經(jīng)常有香客問我,道長兼丰,這世上最難降的妖魔是什么玻孟? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任唆缴,我火速辦了婚禮鳍征,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘面徽。我一直安慰自己艳丛,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布趟紊。 她就那樣靜靜地躺著氮双,像睡著了一般。 火紅的嫁衣襯著肌膚如雪霎匈。 梳的紋絲不亂的頭發(fā)上戴差,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音铛嘱,去河邊找鬼暖释。 笑死,一個胖子當(dāng)著我的面吹牛墨吓,可吹牛的內(nèi)容都是我干的球匕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼帖烘,長吁一口氣:“原來是場噩夢啊……” “哼亮曹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤照卦,失蹤者是張志新(化名)和其女友劉穎式矫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體役耕,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡衷佃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蹄葱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氏义。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖图云,靈堂內(nèi)的尸體忽然破棺而出惯悠,到底是詐尸還是另有隱情,我是刑警寧澤竣况,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布克婶,位于F島的核電站,受9級特大地震影響丹泉,放射性物質(zhì)發(fā)生泄漏情萤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一摹恨、第九天 我趴在偏房一處隱蔽的房頂上張望筋岛。 院中可真熱鬧,春花似錦晒哄、人聲如沸睁宰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柒傻。三九已至,卻和暖如春较木,著一層夾襖步出監(jiān)牢的瞬間红符,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工伐债, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留预侯,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓泳赋,卻偏偏與公主長得像雌桑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子祖今,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容