Bash

登錄 shell 的預期目的是什麼?

  • November 11, 2021

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_shellshell 選項。

引用自:https://unix.stackexchange.com/questions/435964