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

2021-08-11 22:49:13 字數 1968 閱讀 1303

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

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

控制台(console)是物理裝置,用於輸入輸出,它直接連線在計算機上,是計算機系統的一部分。計算機輸出的資訊會顯示在控制台上,例如bios的輸出,核心的輸出。

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

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

在ubuntu中,我們按下ctrl+alt+fx時,會進入第x個虛擬終端,一共有七個虛擬終端,其中第七個虛擬終端,就是我們預設使用的圖形使用者介面。
我們知道,終端是一種物理裝置,而終端模擬器(terminal emulator),是乙個程式,這些程式用來模擬物理終端。圖形使用者介面中的終端模擬器一般稱為終端視窗(terminal window),我們在ubuntu下開啟的gnome-terminal就屬於此類。

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

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

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

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

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

thompson shell是第乙個unix shell,由 ken thompso於2023年在unix第一版本中引入,shell的程式名即為sh。bourne shell作為thompson shell的替代,由 stephen bourne於2023年在unix第七版中引入,它的程式名也是sh。bourne shell不僅僅是乙個命令直譯器,更作為一種程式語言,提供了thompson shell不具備的程式控制功能,並隨著 brian w. kernighan 和 rob pike 的 the unix programming environment的出版而名聲大噪。

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

bash是由 brian fox為gnu專案開發的自由軟體,作為bourne shell的替代品,於2023年發布。是linux和mac os x的預設shell。bash的命令語法是bourne shell命令語法的超集,從ksh和csh借鑑了一些思想。

Linux 控制台 終端 tty shell

一 簡介 使用linux已經有一段時間,卻一直弄不明白這幾個概念之間的區別。這些概念本身有著非常濃厚的歷史氣息,隨著時代的發展,他們的含義也在發生改變,它們有些已經失去了最初的含義,但是它們的名字卻被保留了下來。下面就澄清一下這些概念。二 聯絡與區別 1 控制台,終端,tty,shell的區別 2 ...

Linux 控制台 終端 tty shell

一 簡介 使用linux已經有一段時間,卻一直弄不明白這幾個概念之間的區別。這些概念本身有著非常濃厚的歷史氣息,隨著時代的發展,他們的含義也在發生改變,它們有些已經失去了最初的含義,但是它們的名字卻被保留了下來。下面就澄清一下這些概念。二 聯絡與區別 1 控制台,終端,tty,shell的區別 2 ...

控制台終端

如同其他unix類系統,linux本身也是基於命令列的。試試 ctrl alt f1 這就是控制台,算是linux的本來面目。至於使用方法,除了多出登入登出外,和 終端 差不多。在x window出問題或不執行x window的時候,操作主要在這裡完成。linux在控制台下提供了不止乙個終端,支援多...