/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形式,此檔案才會讀取,也就是說,在文本模式注銷時,此檔案會被讀取,圖形模式注銷時,此檔案不會被讀取,
下面是在本機的幾個例子:
- 圖形模式登錄時,順序讀取:/etc/profile和~/.profile
- 圖形模式登錄后,打開終端時,順序讀取:/etc/bash.bashrc和~/.bashrc
- 文本模式登錄時,順序讀取:/etc/bash.bashrc,/etc/profile和~/.bash_profile
- 從其它用戶su到該用戶,則分兩種情況:
(1)如果帶-l引數(或-引數,--login引數),如:su -l username,則bash是login的,它將順序讀取以下組態檔:/etc/bash.bashrc,/etc/profile和~/.bash_profile,
(2)如果沒有帶-l引數,則bash是non-login的,它將順序讀取:/etc/bash.bashrc和~/.bashrc - 注銷時,或退出su登錄的用戶,如果是longin方式,那么bash會讀取:~/.bash_logout
- 執行自定義的shell檔案時,若使用“bash -l a.sh”的方式,則bash會讀取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(這個不屬于bash shell),則不會讀取上面的任何檔案,
- 上面的例子凡是讀取到/.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/profile此檔案為系統的每個用戶設定環境資訊,當第一個用戶登錄時,該檔案被執行.
并從/etc/profile.d目錄的組態檔中搜集shell的設定.
/etc/bashrc:為每一個運行bash shell的用戶執行此檔案.當bash shell被打開時,該檔案被讀取,有些linux版本中的/etc目錄下已經沒有了bashrc檔案,
~/. profile每個用戶都可使用該檔案輸入專用于自己使用的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的執行都會使用它一次
轉載自:http://blog.csdn.net/u013968345/article/details/21262033
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/238422.html
標籤:其他
