linux關於bashrc與profile的區別

目錄(?)[-]linux

  1. 個人見解
  2. 轉載

bashrc與profile的區別shell

個人見解

其實打開~/.profile, ~/.bashrc和~/.bash_profile文件,咱們就能夠看到區別. 
1.首先說~/.profile: 
這裏有一句話source 「${HOME}/.bashrc」,也就說把 ~/.bashrc的內容放在這裏,也就是profile是包含bashrc的.windows

if [ -n "${BASH_VERSION}" ]; then
  if [ -f "${HOME}/.bashrc" ]; then
    source "${HOME}/.bashrc"
  fi
fi
  • 2.再說~/.bash_profile 
    裏面一樣有相似的一句話,說明bash_profile也包含了bashrc.
if [ -f "${HOME}/.bashrc" ] ; then
  source "${HOME}/.bashrc"
fi
  • 3.最後說~/.bashrc 

由於profile和bash_profile都包含bashrc,因此咱們只須要把經常使用的設置放在bashrc裏便可,由於profile和bashrc_profile會包含bashrc. 
好比在裏面 
alias ll=’ls -l’ 表明之後輸入ll,就表示ls -lbash

轉載

要搞清bashrc與profile的區別,首先要弄明白什麼是交互式shell和非交互式shell,什麼是login shell 和non-login shell。spa

交互式模式就是shell等待你的輸入,而且執行你提交的命令。這種模式被稱做交互式是由於shell與用戶進行交互。這種模式也是大多數用戶很是熟悉的:登陸、執行一些命令、簽退。當你簽退後,shell也終止了。 shell也能夠運行在另一種模式:非交互式模式。在這種模式下,shell不與你進行交互,而是讀取存放在文件中的命令,而且執行它們。當它讀到文件的結尾,shell也就終止了。 
bashrc與profile都用於保存用戶的環境信息,bashrc用於交互式non-loginshell,而profile用於交互式login shell。系統中存在許多bashrc和profile文件,下面逐一介紹:.net

  • /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中的變量,他們是」父子」關係.調試

profile文件是在用戶登陸的時候進行初始化的,/etc/profile和~/.profile分別對應全部用戶和單個用戶。而~/.bashrc 文件,則是在每次啓動一個shell的時候,對環境進行初始化,感受,有些像windows下面那些特殊的cmd窗口,好比.net調試的cmd窗口。而我正好要在圖形界面下面執行程序,而且是系統一啓動就進入桌面環境的。這樣一來,.bashrc就沒有被執行,我配置的環境變量固然也就還在家裏休息了。code

 

某網友總結以下: 
/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的執行都會使用它一次blog

相關文章
相關標籤/搜索