控制台,終端,虛擬終端,tty,shell等概念的區別

來源:互聯網
上載者:User

控制台,終端,tty,shell等概念的區別

使用linux已經有一段時間,卻一直弄不明白這幾個概念之間的區別。雖然一直在用,但是很多概念都感覺模糊不清,這樣不上不下的狀態實在令人不爽。下面就澄清一下這些概念。

這些概念本身有著非常濃厚的曆史氣息,隨著時代的發展,他們的含義也在發生改變,它們有些已經失去了最初的含義,但是它們的名字卻被保留了下來。

控制台(Console)

控制台(Console)是物理裝置,用於輸入輸出,它直接連接在電腦上,是電腦系統的一部分。電腦輸出的資訊會顯示在控制台上,例如BIOS的輸出,核心的輸出。

終端(Terminal)

終端(Terminal)也是一台物理裝置,只用於輸入輸出,本身沒有強大的計算能力。一台電腦只有一個控制台,在計算資源緊張的時代,人們想共用一台電腦,可以通過終端串連到電腦上,將指令輸入終端,終端傳送給電腦,電腦完成指令後,將輸出傳送給終端,終端將結果顯示給使用者。

虛擬控制台(Virtual Console),虛擬終端(Virtual Terminal)

虛擬控制台(Virtual Console)和虛擬終端是一樣的。我們只有一台終端(物理裝置),這是我們與電腦之間的使用者介面。假如有一天,我們想擁有多個使用者介面,那麼,一方面我們可以增加終端數目(物理裝置),另一方面,還可以在同一台終端(物理裝置)上虛擬出多個終端,它們之間互相不影響,至少看起來互相不影響。這些終端就是虛擬終端。

在Ubuntu中,我們按下Ctrl+Alt+Fx時,會進入第x個虛擬終端,一共有七個虛擬終端,其中第七個虛擬終端,就是我們預設使用的圖形化使用者介面。

終端模擬器(Terminal Emulator)

我們知道,終端是一種物理裝置,而終端模擬器(Terminal Emulator),是一個程式,這些程式用來類比物理終端。圖形化使用者介面中的終端模擬器一般稱為終端視窗(Terminal Window),我們在Ubuntu下開啟的gnome-terminal就屬於此類。

tty

tty的全稱是TeleTYpewriter,這就是早期的終端(物理裝置),它們用於向電腦發送資料,並將電腦的返回結果列印出來。顯示器出現後,終端不再將結果列印出來,而是顯示在顯示器上。但是tty的名字還是保留了下來。

在Ubuntu中,我們按下Ctrl+Alt+F1時,會進入第1個虛擬終端,你可以看到螢幕上方顯示的tty1。

shell

shell 和之前說的幾個概念截然不同,之前的幾個概念都是與電腦的輸入輸出相關的,而shell是和核心相關的。核心為上層的應用提供了很多服務,shell在核心的上層,在應用程式的下層。例如,你寫了一個 hello world 程式,你並不用顯式地建立一個進程來運行你的程式,你把寫好的程式交給shell就行了,由shell負責為你的程式建立進程。

我們在終端模擬器中輸入命令時,終端模擬器本身並不解釋執行這些命令,它只負責輸入輸出,真正解釋執行這些命令的,是shell。

我們平時使用的sh, bash, csh是shell的不同實現。

  • sh sh這個概念本身就有岐義,它可以指shell程式的名字,也代表了shell的實現。

    Thompson shell是第一個Unix shell,由 Ken Thompso於1971年在Unix第一版本中引入,shell的程式名即為sh。Bourne shell作為Thompson shell的替代,由 Stephen Bourne於1977年在Unix第七版中引入,它的程式名也是sh。Bourne shell不僅僅是一個命令直譯器,更作為一種程式設計語言,提供了Thompson shell不具備的程式控制功能,並隨著 Brian W. Kernighan 和 Rob Pike 的 The UNIX Programming Environment的出版而名聲大噪。

  • csh csh全稱為 C Shell,由 Bill Joy在70年代晚期完成,那時候他還是加州伯克利大學的研究生。tcsh是csh的升級版。與sh不同,csh的shell指令碼,文法接近於C語言。

  • bash bash是由 Brian Fox為GNU項目開發的自由軟體,作為Bourne shell的替代品,於1989年發布。是Linux和Mac OS X的預設shell。bash的命令文法是Bourne shell命令文法的超集,從ksh和csh借鑒了一些思想。

    好了,就寫到這裡,上面的內容是我參考維基百科後寫下的,不保證完全正確, 下面還提供了一些資料,如果有興趣可以閱讀一下。

    擴充閱讀
    1. What is the exact difference between a 'terminal', a 'shell', a 'tty' and a 'console'?

    2. shell,bash,zsh,console,terminal到底是什麼意思,它們之間又是什麼關係?

    3. shell、控制台、終端的區別

    4. Why is a virtual terminal “virtual”, and what/why/where is the “real” terminal?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.