Bash 并不是唯一可供選擇的 Shell。還存在數(shù)量眾多的 Shell,它們都有一些獨特的特性,例如 Zsh、Fish、Ksh 和 Xonsh。
在你的系統(tǒng)中,你可以同時安裝多個 Shell。
要想將另一個 Shell 設(shè)為默認(rèn)值,你可以按照以下方式使用 chsh 命令:
chsh -s path_to_binary_of_shell
如需找到 Shell 的二進(jìn)制路徑,你可以查看 /etc/shells
文件的內(nèi)容。另外,你也可使用以下自動獲取所需 Shell 二進(jìn)制路徑的命令:
chsh -s $(which new_shell)
接下來,讓我們詳細(xì)了解一下如何確定并更改 Shell。
我現(xiàn)在用的是哪個 Shell?
有很多方法可以幫你找出當(dāng)前使用的是哪個 Shell,雖然專家可能會辯論這些方法的準(zhǔn)確度。
最常用的,也是最簡單的方式是:
echo $0
$0 是一個特別的 Shell 變量,這可以獲取你正在使用的 Shell 或 Shell 腳本的名稱(如果你在腳本中使用了它)。
你還可以使用下面的命令檢查進(jìn)程:
ps -p $
其中,$
代表的是當(dāng)前進(jìn)程 / Shell 的進(jìn)程 ID。
如何安裝另一個 Shell?
和其他軟件包一樣,大部分知名 Shell,例如 Fish 和 Zsh,都可以直接從你的發(fā)行版軟件倉庫中下載安裝。新的,相對小眾的 Shell,例如 Xonsh,可能就需要不同的安裝步驟了。你可以在它們的項目網(wǎng)頁上找到具體的安裝指南。
比如,你想 在 Ubuntu 上安裝 Zsh,那么可以使用以下命令:
sudo apt install zsh
如何更改當(dāng)前的 Shell?
假設(shè)你已經(jīng)安裝了另一個 Shell,那么我們來看一看如何切換過去。
實際上,你只需要輸入新 Shell 的名稱即可。比方說,你想切換到 Zsh,那就輸入:
zsh
若要退出當(dāng)前的 Shell,只需輸入 exit
即可,你會回到你的默認(rèn) Shell。
如何查看默認(rèn)的 Shell 是哪個?
有一個 SHELL
的環(huán)境變量,它可以告訴你當(dāng)前賬戶的默認(rèn) Shell 是哪個:
echo $SHELL
舉個例子,我切換到了 Zsh。此時,當(dāng)前 Shell 顯示的信息是 zsh
,而默認(rèn) Shell 依然顯示為 bash
:
這說明更改 Shell 并不會改變默認(rèn)的 Shell。也就是說,下次你再次登錄到該終端或系統(tǒng),你還會返回到舊的默認(rèn) Shell,而不是新的 Shell。
如何知道系統(tǒng)中可用的 Shell 有哪些?
你可以通過查看 /etc/shells
文件,來了解系統(tǒng)中具有哪些可用的 Shell:
cat /etc/shells
下面就是我當(dāng)前系統(tǒng)中所有可用的 Shell:
如何更改默認(rèn)的 Shell?
/etc/shells
文件的內(nèi)容顯示了所有可用 Shell 的二進(jìn)制文件位置。你需要將它與 chsh 命令一起使用。
假設(shè)我想讓 Zsh 成為默認(rèn)的 Shell,我可以輸入:
chsh -s /usr/bin/zsh
更改后,你需要重新登入才能看到變化。
請注意,以上操作只會更改當(dāng)前用戶的默認(rèn) Shell。如果你是管理員,并且想更改其他用戶的默認(rèn) Shell,那么你可以使用以下命令:
sudo chsh -s /usr/bin/zsh other_username
結(jié)論
linux 的一大特色就是,用戶可以自主選擇。你完全可以根據(jù)自己的需要進(jìn)行更改。這就是另一個例子,你不必局限于發(fā)行版提供的默認(rèn) Shell 的選擇。你很歡迎自選一款 Shell,讓你的工作變得更順手。