1. 程式人生 > >終端、shell、bash的區別聯絡

終端、shell、bash的區別聯絡

最佳答案
  1. 終端,即所謂的命令列介面,又稱命令終端,使用者輸入shell命令用的視窗,跟Windows裡的DOS介面差不多。

  2. shell,Shell就是使用者和作業系統之間的殼,中介,GUI和CLI都算是Shell,登陸終端可以是登陸了Bash也可能是Csh或者Dash;作業系統與使用者互動用的介面,在命令終端裡可以使用shell。shell將使用者輸入翻譯為作業系統能處理的指令。shell提供了一些內建命令,也支援呼叫外面工具。

  3. dash,是ubuntu裡預設的shell。shell有好多種,除支援預設的POSIX標準外還支援不同的擴充套件語法,目前最常用的是bash,很多shell學習的教程都是針對bash的。dash除了不支援陣列外,其實和bash差別也不大。ubuntu裡可以將預設shell由dash改為bash。

第二篇:

終端(terminal,或者叫物理終端): 
是一種裝置,不是一個程式,一般說的就是能提供命令列使用者介面的裝置,典型的是螢幕和鍵盤,或其他的一些物理終端。
虛擬終端: 
螢幕和鍵盤只是一個終端,可能不夠用,又不想增加裝置投入,就產生了虛擬終端。
gnome-terminal,urxvt,mlterm,xterm等等:
是一個程式,職責是模擬終端裝置,和虛擬終端的區別表面上在於它以 GUI 形式的窗口出現,內部則是程式結構和系統控制結構有所不同,但本質上差不多。
控制檯(console): 
顯示系統訊息的終端就叫控制檯,Linux 預設所有虛擬終端都是控制檯,都能顯示系統訊息。
但有時專指CLI下的模擬終端裝置的一個程式,和gnome-terminal,urxvt,mlterm,xterm等相同,只是CLI和GUI介面的區別。一般console有6個,tty1-6,CTRL+ALT+fn切換。還沒聽說過怎麼換console

shell是一個抽象概念,shell的一切操作都在計算機內部,負責處理人機互動,執行指令碼等,是作業系統能正常執行的重要組成部分
bash,ash,zsh,tcsh等是shell這個抽象概念的一種具體的實現,都是一個程式,都能生成一個程序物件。
如果想換shell的程式,可以修改/etc/passwd,把裡面的/bin/bash換成你想要的shell,或者用chsh命令來切換

shell與終端的關係:shell把一些資訊適當的輸送到終端裝置,同時還接收來自終端裝置的輸入。一般每個shell程序都會有一個終端關聯,也可以沒有。

當然,還有一些不同的見解,我認為這個總結不錯,僅供參考!

另外在wikipedia上也講到:

字元程式 <---> 虛擬終端 <---> 影象顯示
shell <---> xterm <---> X11
可見xterm的確是所謂的“虛擬終端”!

    今天看到有人問終端和控制檯的區別,而且這個問題比較有普遍性,因此想抽出一點時間來解釋一下這兩個術語的區別。  終端,英文叫做terminal ,通常簡稱為term ,比如我們在X下的xterm.   控制檯,英文叫做console。   要明白這兩者的關係,還得從以前的多人使用的計算機開始。   大家都知道,最初的計算機由於價格昂貴,因此,一臺計算機一般是由多個人同時使用的。在這種情況下一臺計算機需要連線上許多套鍵盤和顯示器來供多個人 使用。在以前專門有這種可以連上一臺電腦的裝置,只有顯示器和鍵盤,還有簡單的處理電路,本身不具有處理計算機資訊的能力,他是負責連線到一臺正常的計算 機上(通常是通過串列埠) ,然後登陸計算機,並對該計算機進行操作。當然,那時候的計算機作業系統都是多工多使用者的作業系統。這樣一臺只有顯示器和鍵盤能夠通過串列埠連線到計算機 的裝置就叫做終端。   而控制檯又是什麼回事呢? 學機電的人應該知道,一臺機床,或者數控裝置的控制箱,通常會被稱為控制檯,顧名思義,控制檯就是一個直接控制裝置的檯面(一個面板,上面有很多控制按 鈕)。 在計算機裡,把那套直接連線在電腦上的鍵盤和顯示器就叫做控制檯。請注意它和終端的區別,終端是通過串列埠連線上的,不是計算機本身就有的裝置,而控制檯是 計算機本身就有的裝置,一個計算機只有一個控制檯。計算機啟動的時候,所有的資訊都會顯示到控制檯上,而不會顯示到終端上。也就是說,控制檯是計算機的基 本裝置,而終端是附加裝置。 當然,由於控制檯也有終端一樣的功能,控制檯有時候也被模糊的統稱為終端。 計算機作業系統中,與終端不相關的資訊,比如核心訊息,後臺服務訊息,都可以顯示到控制檯上,但不會顯示到終端上。   以上是控制檯和終端的歷史遺留區別。現在由於計算機硬體越來越便宜,通常都是一個人獨佔一臺計算機超做,不再連線以前那種真正意義上的“終端裝置了”,因此,終端和控制檯的概念也慢慢演化了。終端和控制檯由硬體的概念,演化成了軟體的概念。   現在說的終端,比如linux中的虛擬終端,都是軟體的概念,他用計算機的軟體來模擬以前硬體的方式。比如在linux中,你用 alt+f1 ~ f6 可以切換六個虛擬終端,就好比是以前多人公用的計算機中的六個終端裝置,這就是為什麼這個叫“虛擬終端”的原因。當然,現在的linux也可以通過串列埠 線,連線一個真正的終端,現在這種終端裝置已經非常罕見了,但是還存在,只是一般人很難見到。也有人利用以前的老電腦(386,486)裝上一個串列埠通訊 軟體,連上一臺計算機,來模擬一個終端來用。這樣可以達到一臺電腦多人使用的目的。   簡單的說,能直接顯示系統訊息的那個終端稱為控制檯,其他的則稱為終端。但是在linux系統中,這個概念也已經模糊化了。   比如下面這條命令:   echo "hello,world" > /dev/console   這條命令的目的是將"hello,world"顯示到控制檯上/dev/console是控制檯裝置的裝置名。在linux中,在字元模式下,你無論 在哪個虛擬終端下執行這條命令,字元hello,world都會顯示在當前的虛擬終端下。也就是說,linux把當前的終端當作控制檯來看待。可見, linux中已經完全淡化了控制檯和終端的區別。但是在其他的UNIX類系統中,卻很明顯的有虛擬終端和控制檯的區別。比如 freeBSD系統。   在freebsd中,只有第一個“終端”才是真正的控制檯。(就是說按alt+f1得到的那個虛擬終端) ,你無論在哪個虛擬終端上執行上面的那條命令(哪怕是通過網路連線的偽終端上執行這條命令)。hello,world字元總會顯示到第一個“終端”也就是 真正的控制檯上。另外,其他的一些系統內部資訊,比如哪個使用者在哪個終端登陸,系統有何嚴重錯誤警告等資訊,全都顯示在這個真正的控制檯上。在這裡,就明 顯的區分了終端和控制檯的概念。其他UNIX中也是這樣的。比如Tru64 unix 在X下有一個控制檯模擬軟體,你無論在哪裡輸入echo "hello,world" > /dev/console命令,hello,world總會顯示在這個控制檯模擬器中。 我們在X介面下用的那些輸入命令的軟體,比如xterm ,rxvt, gnome-terminal等等,都應該被稱為終端模擬軟體。請注意它和控制檯模擬軟體的區別。 linux中好象沒有控制檯模擬軟體。在X中的終端模擬 軟體中輸入的echo "hello,world">/dev/console 命令的輸出資訊,都會輸出到啟動該X伺服器的虛擬終端上。比如,你用字元方式登陸系統。進入第一個虛擬終端,然後startx啟動X伺服器。再開啟 xterm 來輸入 echo "hello,world">/dev/console 命令,那麼字串hello,world就顯示在第一個虛擬終端上。你按ctrl+alt+f1,回到那個啟動X伺服器的終端,就可以看到hello, world字串。   現在該明白終端和控制檯的區別了吧。再簡單的說,控制檯是直接和計算機相連線的原生裝置,終端是通過電纜、網路等等和主機連線的裝置。   在以前的硬體終端裝置中,由於生產廠家不同,所遵循的標準不同,因此有不同的型號標準。比如vt100等。這裡的vt100就是一個標準,那麼現在我 們所說的終端,往往不是真正的硬體終端了,而是終端模擬軟體了,因此不同的終端模擬軟體可能符合不同的標準,還有一些終端模擬軟體符合很多種不同終端的標 準。比如gnome的終端模擬軟體gnome-terminal,他提供好幾中標準可供使用者選擇。使用者只要設定一下就可以了。   現在,由於原先的這些裝置在我們的視線中漸漸淡出,控制檯和終端的概念也慢慢談化。普通使用者可以簡單的把終端和控制檯理解為:可以輸入命令列並顯示程式執行過程中的資訊以及程式執行結果的視窗。 不必要嚴格區分這兩者的差別。