什么是 Linux 中的登錄 Shell?
當(dāng)用戶登錄到他們的帳戶時,Linux 會啟動一個登錄 shell。那么什么是登錄 shell,你怎么知道你是否正在運(yùn)行呢?
您可能每天都在使用 Linux shell,但是您如何使用它在很大程度上決定了它的行為。您可能聽說過登錄 shell 和非登錄 shell 之間的區(qū)別。雖然一開始可能不那么明顯,但兩種 shell 類型之間存在一些差異。
這是您需要了解的有關(guān) Linux 上登錄 shell 的所有信息。
什么是登錄 Shell?
登錄 shell 就是這樣:當(dāng)你直接登錄到 Linux 機(jī)器時啟動的 shell。當(dāng)您從虛擬控制臺或通過 SSH 登錄系統(tǒng)時,啟動的 shell 是登錄 shell。
相比之下,如果您啟動終端窗口,則該 shell 會話通常不是登錄 shell。當(dāng)您通過在命令行中鍵入 shell 的名稱來啟動子 shell 時也是如此。這個 shell 只是一個交互式 shell。
兩者之間的主要區(qū)別在于 shelll 的行為。shell 通常只會在啟動時讀取某些文件。只有在作為登錄 shell 調(diào)用時,Bash 才會讀取您的主目錄中的/etc/profile、.bash_profile、.bash_login和.profile 文件。
如何判斷您是否正在使用登錄 Shell
很容易看出您是否正在運(yùn)行登錄 shell。如果您從桌面終端應(yīng)用程序啟動了您的 shell,那么您很可能不會,除非您在另一個終端環(huán)境中,例如 WSL 或 macOS 終端。
您可以使用此命令檢查您是否正在運(yùn)行登錄 shell;
echo $0
如果您使用的是登錄 Shell ,您將看到 shell 的名稱前面有一個連字符 ( – )。如果沒有,您只會看到 shell 的名稱。
在 Linux 上設(shè)置登錄 Shell
要設(shè)置您的登錄 shell,請使用 chsh 命令。您可以將登錄 shell 設(shè)置為/etc/shells中列出的任何 shell 的絕對路徑。
要將任何 shell 作為登錄 shell 啟動,通??梢允褂妹钚羞x項。例如,要將 Bash 作為登錄 shell 啟動:
bash --login
如果您使用的是 Linux 桌面,您通常可以指定在打開終端窗口時運(yùn)行哪個命令。如果你想讓你的 shell 作為登錄 shell 運(yùn)行,你可以把那個選項放在那里。
現(xiàn)在您了解登錄 Shell
您現(xiàn)在應(yīng)該了解什么是登錄 shell。直接從控制臺或從終端窗口啟動您的 shell 將確定它的行為方式。
如果您是 Linux 新手,您可能想知道哪個 shell 最好。您可以堅持使用默認(rèn)的 Bash,也可以探索其他 shell(如 Fish 或 Zsh)提供的特殊功能。