【搬家】【工具軟件】Terminal & Command 差異探討——第一部分

本文最早於 2014年1月5日於本人個人博客(http://mooowooo.tk)發表,現博客搬家至此,轉載請註明出處。

一直不太明白 Linux/Unix 家族系統裏的 Terminal 和 Windows 一貫以來使用的 Command命令行 有什麼差異,正好今天週末有空又不太想看書,於是本着打發時間求真務實的精神,Google Wikipedia 一番檢索,大概弄清楚了這個問題,在此記錄彙總如下,方便以後查閱。

首先我明要明確一個問題:這一類程序到底叫什麼?命令行?控制檯?終端?Shell?對於我們用戶來說,這些各式各樣或黑或藍或白的窗口都幹着差不多的事情,無非就是喫進一行行字又吐出一行行字,但卻沒有一個統一的名字,這似乎有點說不過去。其實,這類程序,在計算機領域有一個專門的稱呼,叫做 殼程序(Shell)。有興趣的朋友可以參考 殼程序 的 Wikipedia 頁面瞭解詳細的信息,我在這裏只做一個簡單敘述——也算是考驗自己是否真正理解

殼程序 簡稱 是指:提供用戶使用界面的程序, 主要負責程序與用戶的交互,它包括許多形式,如桌面環境、軟件界面,網頁等都可以算是一定程度上的 殼程序,但是通常來說,我們指的是 命令行解釋器。與之相對的,是被我們稱作 內核(Core) 的部分,這個部分主要負責處理程序的邏輯而不提供與用戶的直接交互。

所以我們知道, 其實只是作爲連接用戶與 內核 之間的一道門,用戶要完成任何動作,實際上都是由 接收到命令,然後向 內核 發起請求,內核 根據各種條件——這個展開講就太複雜——將執行結果送給 ,再由 以一定的格式呈現給用戶。

瞭解完了一個基本的情況,那麼我們分別看看 Windows 的殼—— Command 和 Linux 的殼—— Terminal 有什麼差異。

先說 Linux/Unix 家族系列好了,因爲 Windows 這個傢伙其實內裏還有不少乾坤。

按照我的理解,對於 Linux/Unix 家族來講,Terminal 只是對 Shell 的一個再次接管。對於整個系統來說,Shell 和 Core 都只有一個,但終端可以同時打開許多,我個人認爲,這大概是從最早的分時操作系統遺留下來的一個習慣,爲每個使用者提供一個終端,相互獨立,但是均由一個 Shell 從各個終端接收命令並送給 Core 執行。所以我們題目裏所說的 Terminal 並不是 殼程序 而是夾在 與用戶之間的 終端程序。可以理解爲殼的殼。那麼現在又有問題出現了,對於 Linux/Unix 家族來講,Bash``zsh``cshell這些名字裏直接帶有 shell 的東西又是什麼呢?我的理解是:他們都是 Shell 環境。什麼叫做 Shell 環境呢?簡單的說:他們都是 Shell 解釋器,只是提供了不同的交互環境,可能會有命令或者顯示效果上的差別,但是均能完成與 Core 交互的任務。這也是爲什麼系統裏不能同時設定多個 Shell 環境的原因——關於這點我不是十分確定,如果有問題,歡迎指正。更多關於 Unix Shell 的內容,請參見這個 Wikipedia 頁面

那麼說完了看是紛繁實則簡單的 Linux/Unix 家族,暫時休息一下,Windows 的部分我們明天再講。其實就是想偷懶了找什麼藉口!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章