Linux

“登錄”和“互動式”bash shell 有什麼區別

  • September 21, 2015

“登錄”和“互動式”bash shell 有什麼區別?我在下面引用了維基百科,但有人能給出更好的答案嗎?

編輯:這是一個社區 wiki,因此您可以提供哪些情況需要哪種類型的 $SHELL 的範例,而不是投票關閉

啟動腳本

當 Bash 啟動時,它會執行各種不同腳本中的命令。

當 Bash 作為互動式登錄 shell 呼叫時,它首先從文件 /etc/profile 中讀取並執行命令(如果該文件存在)。讀取該文件後,它會按順序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,並從第一個存在且可讀的文件中讀取並執行命令。

當登錄 shell 退出時,Bash 從文件 ~/.bash_logout(如果存在)讀取並執行命令。

當一個不是登錄 shell 的互動式 shell 啟動時,Bash 從 ~/.bashrc 讀取並執行命令,如果該文件存在的話。這可以通過使用 –norc 選項來禁止。–rcfile 文件選項將強制 Bash 從文件而不是 ~/.bashrc 讀取和執行命令。

在您的登錄 shell 的配置文件中,您可以設置一些您將在會話期間使用的東西,並且只需要完成一次。一些想法:

  • 創建一個包含您連接的 IP 地址的臨時文件,稍後您可以將其包含在一些腳本中設置防火牆規則。
  • 執行 ssh-agent,詢問您的 SSH 密鑰,並將 SSH 代理環境變數儲存在一個文件中。
  • 如果這是一台有限的機器,並且您的同事希望了解彼此的登錄資訊,請編寫 (1) 消息通知他們您的登錄資訊。

在非登錄 shell 的文件 ( .bashrc) 中,您應該配置您的 shell:

  • 花式提示
  • 設置別名
  • 設置歷史選項
  • 定義自定義外殼函式
  • 導出環境變數,(如果系統範圍的設置很糟糕,可能是 PAGER、EDITOR)
  • 載入保存在中的 ssh-agent 變數.bash_profile

通常,您將包括.bashrcfrom.bash_profile與以下內容。然後登錄 shell 獲取您的所有自定義,並且.bash_profile文件不必複製.bashrc.

[[ -f ~/.bashrc ]] && . ~/.bashrc

引用自:https://serverfault.com/questions/8882