Bash
登錄 shell 的預期目的是什麼?
Bash手冊說:
登錄 shell 是一個參數零的第一個字元是’-’,或者使用 –login 選項呼叫的一個。
它根據啟動登錄 shell 的方式定義了登錄 shell。
或者,可以根據其預期目的定義登錄外殼嗎?
例如,可以將登錄 shell 定義為需要使用者登錄的 shell 嗎?例如,在互動式非登錄 bash shell 中,當我執行
bash --login
創建 bash 登錄 shell 時,我不必登錄。是因為我的使用者名和密碼被隱式記憶體和重用,還是只是它沒有執行登錄的工作?如果登錄 shell 不一定要執行登錄,那麼從非登錄 shell 中表徵登錄 shell 的預期目的是什麼?
謝謝。
登錄由 shell 以外的工具處理,例如
login
它自己,或您的桌面管理器(在 PAM 和各種其他工具的幫助下)。登錄 shell的目的不是處理登錄,而是作為登錄會話中的第一個 shell 進行適當的行為:主要是,這意味著處理每個登錄會話只應處理一次的啟動文件,並保護登錄會話免受不需要的與某些系統功能的互動(特別是作業暫停)。
至少在 Bash 中實現的登錄 shell 的細節如下:
- 登錄 shell 處理來自 的命令,然後是它在、和
/etc/profile
中找到的第一個文件(除非它是在沒有選項的情況下啟動的非互動式登錄 shell );~/.bash_profile``~/.bash_login``~/.profile``--login
- 登出 shell 執行
logout
而不是exit
;- 登出外殼會掛起所有作業;
- 登錄 shell 不能被掛起;
- 登錄 shell 設置
HOME
變數(POSIXly 正確模式除外);- 登錄 shell 設置
login_shell
shell 選項。