【轉載】linux-Bash 啟動環境
技術標籤:Linux
文章目錄
Session
使用者每次使用 Shell,都會開啟一個與 Shell 的 Session(對話)。
Session 有兩種型別:登入 Session 和非登入 Session,也可以叫做 login shell 和 non-login shell。
1.1 登入 Session
登入 Session 是使用者登入系統以後,系統為使用者開啟的原始 Session,通常需要使用者輸入使用者名稱和密碼進行登入。
登入 Session 一般進行整個系統環境的初始化,啟動的初始化指令碼依次如下。
/etc/profile
:所有使用者的全域性配置指令碼。/etc/profile.d
目錄裡面所有.sh檔案~/.bash_profile
:使用者的個人配置指令碼。如果該指令碼存在,則執行完就不再往下執行。~/.bash_login
:如果~/.bash_profile
沒找到,則嘗試執行這個指令碼(C shell 的初始化指令碼)。如果該指令碼存在,則執行完就不再往下執行。~/.profile
:如果~/.bash_profile
和~/.bash_login
都沒找到,則嘗試讀取這個指令碼(Bourne shell 和 Korn shell 的初始化指令碼)。
Linux 發行版更新的時候,會更新/etc裡面的檔案,比如/etc/profile
/etc/profile.d
目錄裡面新建.sh指令碼。
如果想修改你個人的登入環境,一般是寫在~/.bash_profile裡面。下面是一個典型的.bash_profile檔案。
[[email protected] local]$ cd
[[email protected] ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
可以看到,這個指令碼定義了一些最基本的環境變數,然後執行了~/.bashrc。
bash命令的–login引數,會強制執行登入 Session 會執行的指令碼。
$ bash --login
bash命令的–noprofile引數,會跳過上面這些 Profile 指令碼。
$ bash --noprofile
1.2 非登入 Session
非登入 Session 是使用者進入系統以後,手動新建的 Session,這時不會進行環境初始化。比如,在命令列執行bash命令,就會新建一個非登入 Session。
非登入 Session 的初始化指令碼依次如下。
- /etc/bash.bashrc:對全體使用者有效。
- ~/.bashrc:僅對當前使用者有效。
對使用者來說,~/.bashrc通常是最重要的指令碼。非登入 Session 預設會執行它,而登入 Session 一般也會通過呼叫執行它。每次新建一個 Bash 視窗,就相當於新建一個非登入 Session,所以~/.bashrc每次都會執行。注意,執行指令碼相當於新建一個非互動的 Bash 環境,但是這種情況不會呼叫~/.bashrc。
bash命令的–norc引數,可以禁止在非登入 Session 執行~/.bashrc指令碼。
$ bash --norc
bash命令的–rcfile引數,指定另一個指令碼代替.bashrc。
$ bash --rcfile testrc
1.3 bash_logout
~/.bash_logout指令碼在每次退出 Session 時執行,通常用來做一些清理工作和記錄工作,比如刪除臨時檔案,記錄使用者在本次 Session 花費的時間。
如果沒有退出時要執行的命令,這個檔案也可以不存在。
啟動選項
為了方便 Debug,有時在啟動 Bash 的時候,可以加上啟動引數。
- -n:不執行指令碼,只檢查是否有語法錯誤。
- -v:輸出每一行語句執行結果前,會先輸出該行語句。
- -x:每一個命令處理之前,先輸出該命令,再執行該命令。
$ bash -n scriptname
$ bash -v scriptname
$ bash -x scriptname
鍵盤繫結
Bash 允許使用者定義自己的快捷鍵。全域性的鍵盤繫結檔案預設為/etc/inputrc,你可以在主目錄建立自己的鍵盤繫結檔案.inputrc
檔案。如果定義了這個檔案,需要在其中加入下面這行,保證全域性繫結不會被遺漏。
$include /etc/inputrc
.inputrc檔案裡面的快捷鍵,可以像這樣定義,"\C-t":"pwd\n"表示將Ctrl + t繫結為執行pwd命令。
轉載:
https://www.wangdoc.com/bash/startup.html