Bash不是唯一的Linux shell。很容易嘗試其他的shell,比如非常流行的Zsh。找到一個您喜歡的shell後,使用chsh命令將其設定為預設shell。我們會教你怎麼做。
shell位於您和作業系統之間。它在終端視窗內提供環境,允許您鍵入命令和執行程式。shell檢查您的輸入並找出您想要的內容。如果它能執行你的出價本身,它這樣做。如果它需要外部幫助,它會搜尋路徑並找到可以執行您所請求的任何操作的程式。
Linux上有許多不同的shell。它們都允許您執行相同的核心任務:瀏覽檔案系統、處理檔案、啟動程式和執行指令碼。然而,他們每個人都以自己的方式執行這些任務,並有自己的特點和特質。
貝殼往往是由那些希望事物以特定方式執行的人設計的。如果你的想法和設計師的一致,那麼這個外殼很可能很適合你。另外,在Linux上嘗試一個新的shell也很容易。
在包括Ubuntu在內的大多數Linux發行版中,預設shell是bash。它做得很好,很能幹。然而,另一個shell可能會提供一個節省時間的差異,這將對您的工作流產生很大的影響。如果你不看,你永遠不會知道!
相關:什麼是ZSH,為什麼要用它來代替Bash?
我們之前已經介紹了不同的Linux shell,但下面簡要介紹一下最常見的:
相關:Bash、Zsh和其他Linux shell之間有什麼區別?
要檢視計算機上安裝了哪些shell,請使用以下命令。它只列出/etc/shell檔案的內容:
cat /etc/shells我們提到了bash、dash和rbash,但是sh是什麼?
sh是湯普森殼,寫於1971年,由貝爾實驗室的Ken Thompson成名。它不再被維護,而且早已被現代貝殼所取代。包含它純粹是為了保持與舊指令碼的相容性,舊指令碼的第一行仍然是以下內容:
#!/bin/sh這指示系統使用sh shell執行指令碼。你的機器上真的有那個古老的外殼嗎?它是用來執行你的指令碼的嗎?which命令將告訴我們在鍵入命令時實際執行的程式。
讓我們看看鍵入sh時執行什麼:
which sh這似乎找到了一個二進位制檔案。不過,如果我們再深入一點,就會發現它是一個符號連結,實際上指向dash,一個用於執行指令碼的輕量級shell:
ls -l /bin/sh這是一種簡潔、輕量級的方法,可以為希望在現代系統上找到sh的指令碼提供一個安全網。
讓我們安裝fish shell並將其設定為dave的預設值。在Ubuntu上,我們鍵入以下命令:
sudo apt-get install fish在Manjaro上,使用pacman:
sudo pacman -Sy fish在Fedora上,鍵入以下內容:
sudo dnf install fish安裝完成後,可以再次檢查已安裝的shell:
cat /etc/shells我們的新外殼顯示為/usr/bin/fish。記下你很快就會用到的那條路。
$SHELL環境變數儲存當前SHELL的名稱。我們可以用echo檢查它設定為哪一個:
echo $SHELL讓我們從魚殼開始:
fish現在,讓我們再次檢查$SHELL環境變數的含義:
echo $SHELL第一次使用echo$SHELL時,我們使用的是bash SHELL。環境變數儲存bash可執行檔案/bin/bash的路徑。
當我們啟動FishShell時,會收到一條友好的歡迎訊息,並且命令提示符會發生變化。可能令人驚訝的是,$SHELL環境仍然持有bash可執行檔案/bin/bash的路徑。沒關係,這很正常。
啟動新shell(或任何其他程式)時,它將繼承父shell的環境。因此,fish shell從bash shell繼承全域性和匯出的環境變數。因為$SHELL環境變數中的值沒有更改,所以它在fish SHELL中的值與在bash SHELL中的值相同。
我們像其他程式一樣在執行魚。我們也可以使用exit退出魚殼。它像其他程式一樣關閉,我們返回bash shell。
這是偉大的嘗試新的貝殼,看看他們能做什麼,你是否與他們相處。你可以在跳傘前進行探索,然後選擇一個作為你的跳傘。
如果決定將fish或任何其他shell設為預設值,則需要使用chsh命令。
chsh命令允許您更改預設shell。訣竅在於它允許您更改預設登入和預設互動shell。你可能想改變一個或另一個,或兩者兼而有之。
每當您登入以獲得命令提示符時,都會使用配置為登入shell的shell。當您已經登入並開啟終端視窗時,您將使用配置為互動式shell的shell。這些殼可以是相同的,也可以是不同的。
要設定登入shell,請使用不帶引數的chsh:
chsh系統會提示您輸入密碼。然後,必須鍵入新shell的路徑並按Enter鍵。
如果我們從另一臺遠端連線到這臺測試計算機,一旦登入,我們就會發現自己身陷囹圄。
要更改互動式shell,請使用chsh和-s(shell)選項。在命令列上傳遞新shell的路徑:
chsh -s /usr/bin/fish系統將提示您輸入密碼並返回到當前shell的命令提示符。您需要登出並重新登入才能使更改生效。當您這樣做時,您將看到問候語和fish shell命令提示符。
$SHELL環境變數現在儲存新預設SHELL的路徑:
echo $SHELL如果您具有root許可權並且可以使用sudo,則可以更改其他使用者帳戶的shell。命令與之前相同,在命令列中添加了此人的使用者名稱:
sudo chsh -s /usr/bin/fish mary當mary下次登入時,當她開啟一個終端視窗時,就會看到新的shell。
只要你對你選擇的外殼感到舒適,它對你來說太好了!請記住,它必須能夠執行常見的指令碼,例如安裝例程。對於這裡提到的貝殼,這應該不是問題。
當然,您也可以下載並安裝一個新的shell,並將其作為一個試駕,而無需對您的計算機進行任何配置更改。當你準備結婚時,chsh將為你主持婚禮。
... 無論您是Python程式設計新手還是專家,讓我們來看看您如何在Android裝置上充分發揮pydroid3的潛力。 ...
...改其目錄,您可以控制他們可以訪問哪些命令。下面介紹如何在Linux上設定受限shell。 受限炮彈 受限shell不是另一個shell。這是標準外殼的另一種模式。Bash、Korn、Fish和其他shell都可以在受限shell模式下啟動。在本文中,我們將...
...shshell的行為,您可以控制超過50個設定。我們將向您展示如何按照您喜歡的方式定製您的Linux系統。 shopt內建 shopt內建是bashshell所有版本的一部分,因此不需要安裝任何東西。多年來,shopt提供的選項數量穩步增加。所以,Bash...
...出顯示的文字。 向下滾動,您將看到頁面的不同元素是如何著色的。 多用與少用非常相似,但也有一些不同。在most中按H可檢視鍵繫結及其函式的列表。 用更少的顏色 如果你不想安裝另一個尋呼機或必須學習新的按鍵,有一...
...一個分支,它的建立完全是為了避免使用systemd。 相關:如何在Linux系統上管理Systemd服務 $home目錄 在Linux目錄結構中,您所做的一切都駐留在“/home”目錄中。您的資料檔案、影象、音樂和整個個人目錄樹都儲存在這個以您的使...
...uild2020上,微軟宣佈新的Windows終端穩定並且“可以供企業使用”。它最初是在Build2019釋出的,微軟甚至準備了一段炫目的影片來宣傳它有多棒。 新的Windows終端具有許多有用的功能。除了功能之外,控制檯環境的核心已經現代化...
Linux上有多種型別的環境變數。瞭解如何檢視它們,為本地和遠端登入建立它們,並使它們在重新啟動後仍然有效。 環境變數的工作原理 啟動終端視窗及其內部的shell時,會引用一組變數,以確保shell配置正確。這些變數還確...
...小又簡單。 在使用Linux計算機的第一個小時內,您將學習如何使用Bash和其他shell附帶的cd命令。也許您以前有在其他作業系統上使用它的經驗,不需要解釋。它會改變當前的工作目錄,對嗎?還有什麼要知道的? 好吧,比你想象...