2019年5月30日 星期四

Linux其Bash Shell的設定檔與啟動順序

使用終端機登入一台Linux系統後。系統會提供一個Shell讓使用者來操作系統,現在通常是Bash Shell。登入以後會依序讀取幾個檔案做好初始環境。至於說要讀取的順序則是看一開始是怎樣起始(invokation)一個bash的,有下面四種方法:
  • 互動方式的登入Shell:bash is invoked as an interactive login shell
    這是最一般的情況,登入系統後直接拿到的Shell
  • 互動式的非登入Shell:an interactive shell that is not a login shell is started
    通常是登入系統以後,執行/bin/bash直接跳入bash shell
  • 非互動式:bash is stared non-interactively
    發生在在系統裡面直接執行bash script的情況
  • 非互動式,由rshd或是sshd啟動
    通常就是遠端使用rsh或是ssh指令啟動某個bash script

下面則是說明上述幾種方法讀取設定檔案的順序:
  • 互動方式的登入Shell設定檔順序:
    1. /etc/profile
    2. ~/.bash_profile~/.bash_login~/.profile:依先後次序讀取,只要讀到其中一個就跳到步驟3。若是登入選項裡面有--noprofile那麼就會跳過這一步。
    3. ~/.bashrc:通常上面都會呼叫這個設定檔
    4. ~/.bash_logout/etc/bash.bash_logout:登出的時候才會執行
  • 互動式的非登入Shelll的設定檔:
    • ~/.bashrc
  • 非互動式的Shell,直接執行下面的指令:注意PATH變數不會被使用到
    • if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
  • 非互動式,由rshd或是sshd啟動的設定檔:
    • ~/.bashrc


參考資料

_EOF_

沒有留言:

張貼留言