- 互動方式的登入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設定檔順序:
- /etc/profile
- ~/.bash_profile或~/.bash_login或~/.profile:依先後次序讀取,只要讀到其中一個就跳到步驟3。若是登入選項裡面有--noprofile那麼就會跳過這一步。
- ~/.bashrc:通常上面都會呼叫這個設定檔
- ~/.bash_logout與/etc/bash.bash_logout:登出的時候才會執行
- 互動式的非登入Shelll的設定檔:
- ~/.bashrc
- 非互動式的Shell,直接執行下面的指令:注意PATH變數不會被使用到
- if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
- 非互動式,由rshd或是sshd啟動的設定檔:
- ~/.bashrc
參考資料
- man bash找到INVOCATION那一段
- Mac其Shell的設定與啟動順序
沒有留言:
張貼留言