1. 程式人生 > 其它 >【轉載】linux-Bash 啟動環境

【轉載】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