本文共6100餘字,預計閱讀時間16分鐘,本文知乎連接:Linux Cygwin知識庫(一):一文搞清控制台、終端、shell概念,本文同步發佈於微信公眾號(偽碼人)。
關注賬號學習了解更多Cygwin、Linux技術。
目錄
0x00 關係概覽
0x01 控制台、終端、串口終端
0x02 虛擬終端、終端模擬器、偽終端
0x03 Shell
參考
控制台、終端、shell是命令行界面(CLI)系統中極重要的幾個概念,而計算機軟體系統中最普遍的思想是分層,這幾個事物就在不同層次中,搞清楚概念才能理解軟體程序工作在那一層,本文將帶你梳理清楚控制台、終端、shell相關概念及其關係。
0x00 關係概覽
先總體上簡要概括這幾個名詞在計算機系統中所扮演的角色。
控制台、終端、虛擬終端是一類輸入輸出設備的總稱,擁有將用戶指令輸入給操作系統和將操作系統返回結果輸出給用戶的基本功能,電傳打字機(teletypewriter,縮寫為tty)是該類設備的具體實例。終端模擬器(Terminal Emulator)是一類應用程序,用來模擬終端設備的功能,未具體說明情況下,「終端」泛指真實終端設備或終端模擬器。偽終端(pseudo tty,縮寫為pty)是UNIX/Linux內核中驅動程序模塊,是一個軟體中間層,用於克服真實終端設備在現代應用場景中的不足。
Shell是UNIX/Linux系統中最為重要的應用程序之一,負責解釋執行用戶指令,列印結果,和用戶交互,進行著REPL(Read-Evaluate-Print Loop)。sh、bash、zsh、fish等都是Shell的具體實例。
系統內核接管計算機資源,設備和程序在系統內核的調配下運轉,他們之間的關係可用下圖表示。用戶實際用到的是具體程序,是難以感知內核的存在的,所以看起來就像是Shell在幫助用戶調用程序。