linux 下/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc 文件的區別

/etc/profile:此文件爲系統的每一個用戶設置環境信息,當用戶第一次登陸時,該文件被執行. 並從/etc/profile.d目錄的配置文件中搜集shell的設置. 

/etc/bashrc:爲每個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取. 

~/.bash_profile:每一個用戶均可使用該文件輸入專用於本身使用的shell信息,當用戶登陸時,該 文件僅僅執行一次!默認狀況下,他設置一些環境變量,執行用戶的.bashrc文件. 
~/.bashrc:該文件包含專用於你的bash shell的bash信息,當登陸時以及每次打開新的shell時,該文件被讀取. 
~/.bash_logout:當每次退出系統(退出bash shell)時,執行該文件. 
另外,/etc/profile中設定的變量(全局)的能夠做用於任何用戶,而~/.bashrc等中設定的變量(局部)只能繼承/etc/profile中的變量,他們是"父子"關係. 
~/.bash_profile 是交互式、login 方式進入 bash 運行的 
~/.bashrc 是交互式 non-login 方式進入 bash 運行的 
一般兩者設置大體相同,因此一般前者會調用後者。 
bash的幾個初始化文件 - [Ubuntu] 
(1)/etc/profile 
全局(公有)配置,無論是哪一個用戶,登陸時都會讀取該文件。 
(2)/ect/bashrc 
Ubuntu沒有此文件,與之對應的是/ect/bash.bashrc 
它也是全局(公有)的 
bash執行時,無論是何種方式,都會讀取此文件。 
(3)~/.profile 
若bash是以login方式執行時,讀取~/.bash_profile,若它不存在,則讀取~/.bash_login,若前二者不存在,讀取~/.profile。 
另外,圖形模式登陸時,此文件將被讀取,即便存在~/.bash_profile和~/.bash_login。 
(4)~/.bash_login 
若bash是以login方式執行時,讀取~/.bash_profile,若它不存在,則讀取~/.bash_login,若前二者不存在,讀取~/.profile。 
(5)~/.bash_profile 
Unbutu默認沒有此文件,可新建。 
只有bash是以login形式執行時,纔會讀取此文件。一般該配置文件還會配置成去讀取~/.bashrc。 
(6)~/.bashrc 
當bash是以non-login形式執行時,讀取此文件。如果以login形式執行,則不會讀取此文件。 
(7)~/.bash_logout 
註銷時,且是longin形式,此文件纔會讀取。也就是說,在文本模式註銷時,此文件會被讀取,圖形模式註銷時,此文件不會被讀取。 

下面是在本機的幾個例子: 
1. 圖形模式登陸時,順序讀取:/etc/profile和~/.profile 
2. 圖形模式登陸後,打開終端時,順序讀取:/etc/bash.bashrc和~/.bashrc 
3. 文本模式登陸時,順序讀取:/etc/bash.bashrc,/etc/profile和~/.bash_profile 
4. 從其它用戶su到該用戶,則分兩種狀況: 
    (1)若是帶-l參數(或-參數,--login參數),如:su -l username,則bash是lonin的,它將順序讀取如下配置文件:/etc/bash.bashrc,/etc/profile和~/.bash_profile。 
    (2)若是沒有帶-l參數,則bash是non-login的,它將順序讀取:/etc/bash.bashrc和~/.bashrc 
5. 註銷時,或退出su登陸的用戶,若是是longin方式,那麼bash會讀取:~/.bash_logout 
6. 執行自定義的shell文件時,若使用「bash -l a.sh」的方式,則bash會讀取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(這個不屬於bash shell),則不會讀取上面的任何文件。 
7. 上面的例子凡是讀取到~/.bash_profile的,若該文件不存在,則讀取~/.bash_login,若前二者不存在,讀取~/.profile。 

linux中profile與bashrc的區別 
Ubuntu 的相關目錄下 
/ect/ /root /home/myuser 
profile .profile .profile 
bash.bashrc .bashrc .bashrc 
profile.d 

Fedora的相關目錄 
/ect/ /root /home/myuser 
profile      profile 
bashrc   .bashrc bashrc 
profile.d                     profile.d 

說明:myuser 是你添加建立的用戶 
在網上找了半天也不能包括全部的,因此只能比較個大概。 


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的執行都會使用它一次 html

某網友總結以下:linux

/etc/profile:此文件爲系統的每一個用戶設置環境信息,當用戶第一次登陸時,該文件被執行,並從/etc/profile.d目錄的配置文件中搜集shell的設置,
/etc/bashrc:爲每個運行bash shell的用戶執行此文件,當bash shell被打開時,該文件被讀取。
~/.bash_profile:每一個用戶均可使用該文件輸入專用於本身使用的shell信息,當用戶登陸時,該文件僅僅執行一次!默認狀況下,他設置一些環境變量,執行用戶的.bashrc文件。
~/.bashrc:該文件包含專用於你的bash shell的bash信息,當登陸時以及每次打開新的shell時,該文件被讀取。shell

 轉載加整理bash

原文出處:https://www.cnblogs.com/bandiao/p/10805749.htmlhtm

相關文章
相關標籤/搜索