Bash的功能 執行啟動檔案

2021-10-06 12:46:42 字數 1698 閱讀 2550

如果bash作為login shell呼叫時,它按順序讀取和執行以下檔案中的命令:

通常,在/etc/profile裡有這麼一句:

if

[ -d /etc/profile.d ]

;then

for i in /etc/profile.d/*.sh;

doif

[ -r $i];

then.$i

fidone

unset i

fi

所以,/etc/profile.d目錄下的*.s**件也會在login shell啟動時被執行

如果呼叫bash時使用了–noprofile選項,上述檔案就不會在login shell啟動時執行。

login shell退出時會執行

如果bash作為互動式shell,但不是login shell呼叫時,讀取和執行下面檔案中的命令

如果呼叫bash時使用了–norc選項,上述檔案就互動式shell啟動時執行。

使用–rcfile file選項指定互動式shell啟動時執行的檔案,而不是~/.bashrc

通常,在login shell的啟動檔案~/.bash_profile, ~/.bash_login和~/.profile裡有這麼一句:

if

[ -f "$home/.bashrc"];

then

."$home/.bashrc"

fi

所以- ~/.bashrc也在login shell啟動時被執行

以非互動方式啟動bash時(例如執行shell指令碼),bash還會環境中查詢變數bash_env,如果bash_env存在,則會對其進行擴充套件,並將擴充套件後的值用作要讀取和執行的檔案。bash的行為就像執行以下命令一樣:

if

[ -n "$bash_env"];

then

."$bash_env"

;fi

但path變數的值不用於搜尋檔名。

總結一下:

互動式shell

非互動式shell

login shell

/etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profile, ~/.bashrc

/etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profile, bash_env

非login shell

~/.bashrc

bash_env

如果使用名稱sh呼叫bash,啟動檔案如下:

互動式shell

非互動式shell

login shell

/etc/profile, ~/.profile, env

沒有啟動檔案

非login shell

env沒有啟動檔案

–noprofile選項可用於禁止此login shell的啟動檔案執行

啟動檔案執行完後,bash進入posix模式

互動式shell

非互動式shell

login shell

env沒有啟動檔案

非login shell

env沒有啟動檔案

bash

sh~/.bashrc

沒有啟動檔案

沒有啟動檔案會被執行

BASH 執行可行性檔案

問題 需要在linux 或者unix 系統下執行某個程式。解決方案 使用 bash 在bash 的提示符後敲入你要執行的命令。討論 這表面上看起來簡單,但是簡單的背後有一系列的事情是我們沒有看到的。理解 bash 的重點就是要知道 bash 的基本操作就是載入和執行可執行程式。當然 bash 還有其...

bash基礎功能之多命令順序執行與管道符

1.多命令順序執行 多命令執行符 格式作用 命令1 命令2 多個命令順序執行,命令之間沒有任何邏輯聯絡 命令1 命令2 邏輯與當命令1正確執行,則命令2才會執行 當命令1執行不正確,則命令2不會執行 命令1 命令2 邏輯或當命令1執行不正確,則命令2才會執行 當命令1執行正確,則命令2不會執行 舉例...

bash指令碼執行的控制語句

一 bash指令碼執行的控制語句 1 順序執行 預設,逐條執行各語句。2 選擇執行if 分支,條件判斷,執行符合條件的分支。2 雙分支 fi 3 多分支 4 例1 寫乙個指令碼,實現如下功能 1 讓使用者通過鍵盤輸入乙個使用者名稱 2 如果使用者存在,就顯示其使用者名稱和uid 3 否則,就顯示使用...