Linux
“登錄”和“互動式”bash shell 有什麼區別
“登錄”和“互動式”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
通常,您將包括
.bashrc
from.bash_profile
與以下內容。然後登錄 shell 獲取您的所有自定義,並且.bash_profile
文件不必複製.bashrc
.[[ -f ~/.bashrc ]] && . ~/.bashrc