什么是 Linux 中的登錄 Shell?

當(dāng)用戶(hù)登錄到他們的帳戶(hù)時(shí),Linux 會(huì)啟動(dòng)一個(gè)登錄 shell。那么什么是登錄 shell,你怎么知道你是否正在運(yùn)行呢?
您可能每天都在使用 Linux shell,但是您如何使用它在很大程度上決定了它的行為。您可能聽(tīng)說(shuō)過(guò)登錄 shell 和非登錄 shell 之間的區(qū)別。雖然一開(kāi)始可能不那么明顯,但兩種 shell 類(lèi)型之間存在一些差異。
這是您需要了解的有關(guān) Linux 上登錄 shell 的所有信息。
什么是登錄 Shell?
登錄 shell 就是這樣:當(dāng)你直接登錄到 Linux 機(jī)器時(shí)啟動(dòng)的 shell。當(dāng)您從虛擬控制臺(tái)或通過(guò) SSH 登錄系統(tǒng)時(shí),啟動(dòng)的 shell 是登錄 shell。
相比之下,如果您啟動(dòng)終端窗口,則該 shell 會(huì)話(huà)通常不是登錄 shell。當(dāng)您通過(guò)在命令行中鍵入 shell 的名稱(chēng)來(lái)啟動(dòng)子 shell 時(shí)也是如此。這個(gè) shell 只是一個(gè)交互式 shell。
兩者之間的主要區(qū)別在于 shelll 的行為。shell 通常只會(huì)在啟動(dòng)時(shí)讀取某些文件。只有在作為登錄 shell 調(diào)用時(shí),Bash 才會(huì)讀取您的主目錄中的/etc/profile、.bash_profile、.bash_login和.profile 文件。
如何判斷您是否正在使用登錄 Shell
很容易看出您是否正在運(yùn)行登錄 shell。如果您從桌面終端應(yīng)用程序啟動(dòng)了您的 shell,那么您很可能不會(huì),除非您在另一個(gè)終端環(huán)境中,例如 WSL 或 macOS 終端。
您可以使用此命令檢查您是否正在運(yùn)行登錄 shell;
echo $0

如果您使用的是登錄 Shell ,您將看到 shell 的名稱(chēng)前面有一個(gè)連字符 ( – )。如果沒(méi)有,您只會(huì)看到 shell 的名稱(chēng)。
在 Linux 上設(shè)置登錄 Shell
要設(shè)置您的登錄 shell,請(qǐng)使用 chsh 命令。您可以將登錄 shell 設(shè)置為/etc/shells中列出的任何 shell 的絕對(duì)路徑。
要將任何 shell 作為登錄 shell 啟動(dòng),通??梢允褂妹钚羞x項(xiàng)。例如,要將 Bash 作為登錄 shell 啟動(dòng):
bash --login

如果您使用的是 Linux 桌面,您通常可以指定在打開(kāi)終端窗口時(shí)運(yùn)行哪個(gè)命令。如果你想讓你的 shell 作為登錄 shell 運(yùn)行,你可以把那個(gè)選項(xiàng)放在那里。
現(xiàn)在您了解登錄 Shell
您現(xiàn)在應(yīng)該了解什么是登錄 shell。直接從控制臺(tái)或從終端窗口啟動(dòng)您的 shell 將確定它的行為方式。
如果您是 Linux 新手,您可能想知道哪個(gè) shell 最好。您可以堅(jiān)持使用默認(rèn)的 Bash,也可以探索其他 shell(如 Fish 或 Zsh)提供的特殊功能。















 
 
 









 
 
 
 