什麼是 Shell?
Shell 是介於使用者與核心之間的命令解譯程式,負責將指令轉換為機器碼執行,同時保護系統資源免受誤操作傷害。程式經編譯器成二進位,命令則由 Shell 解譯執行。
Shell 啟動流程
- 核心載入記憶體,管理系統資源、建立進程、檔案系統、通訊等。
- Shell 等程式存放磁碟,由核心載入執行。
- 登入時啟動互動式 Shell,提示輸入命令。
- 鍵入命令後 Shell 執行:語法分析 → 處理萬用字元/導向/管線/工作控制 → 搜尋並執行命令。
Shell 發展歷程
- Bourne Shell (sh):1979 年 V7 UNIX,Stephen Bourne 開發,基於 Algol,用於自動化管理,簡潔快速,缺乏互動功能(歷史、別名、工作控制)。
- C Shell (csh):Berkeley 1970 年代末,Bill Joy 開發,隨 2BSD 發行。基於 C 語言語法,加入歷史、別名、工作控制、內建算術、檔名補全。但大型機設計,小機器執行較慢。
- Korn Shell (ksh):AT&T David Korn,1980 年代中期發明,1986 發行,1988 成 SVR4 標準。Bourne Shell 超集,向上兼容,吸收 C Shell 優點,提升速度效率,支援函式、正規表示式萬用字元、協同處理、除錯功能。Linux 上為 pdksh (Public Domain Korn Shell)。
三大主流 Shell 比較
| Shell | 來源 | 特色 | 預設提示符 | 適用場景 |
| Bourne Shell (sh) | AT&T | 標準、簡潔、快速 | $ | 系統管理腳本、單用戶模式 root |
| C Shell (csh/tcsh) | Berkeley | 互動強:歷史、別名、工作控制、檔名補全 | % | 互動式使用者偏好 |
| Korn Shell (ksh/pdksh) | AT&T | Bourne 超集、兼容、功能最豐富、效率高 | $ | 進階腳本、跨平台(OS/2、VMS、DOS) |
Linux 預設通常為 Bash (Bourne Again Shell),功能兼容 sh 並擴充 csh/ksh 特性,是目前最普及的 Shell。