ShellScript 程式語言發展史年表#
Shell Script 是 UNIX 世界最古老的「膠水語言」:它沒有獨立的編譯器, 而是以解譯器(shell)的形式存在,負責把使用者的指令翻譯給作業系統。 從 1971 年 Thompson Shell 的雛形,到 1977 年 Bourne Shell(sh)奠定現代語法, 再到 bash、zsh、fish 等後裔,Shell Script 見證了 UNIX、POSIX、Linux 與開源運動的整部歷史。
前史:理論根源#
| 年份 | 事件 | 意義 |
|---|---|---|
| 1964 | Multics 計畫啟動 | 「shell」一詞的起源:作業系統的外殼應與核心分離 |
| 1965 | Louis Pouzin 提出 shell 設計 | 首次把「命令直譯器」稱為 shell,設計了 RUNCOM |
| 1969 | UNIX 問世 | Thompson 與 Ritchie 在貝爾實驗室創造 UNIX |
| 1971 | Thompson Shell | UNIX 第一個 shell,以外部程式 sh 執行腳本 |
| 1973 | 管線(pipe)問世 | McIlroy 提出「小事處理」哲學,| 成為組合程式的基礎 |
| 1975 | Mashey Shell | 加入 if、goto 等控制流程,暴露高階語法需求的不足 |
| 1976 | C 語言成熟 | Bourne 以「不使用 C 語法」的方式重寫 shell 的時代背景 |
正式年表#
| 年份 | 標題 | 關鍵語法/特性 |
|---|---|---|
| 1971 | Thompson Shell:第一個 UNIX Shell | 外部 sh 直譯器、< > 重導向、簡單參數取代 |
| 1973 | 管線誕生 | \| 管線運算子、「小事處理」組合哲學 |
| 1977 | Bourne Shell(sh)問世 | 變數、if/then/elif/else、for、while、case、函數、here-doc(<<,1977 發明)、$() 環境 |
| 1978 | C Shell(csh)問世 | 交互式歷史命令、別名(alias)、工作控制(job control)、C 風格語法 |
| 1983 | Korn Shell(ksh)問世 | 相容 sh 又吸收 csh 交互功能、陣列、算術展開 $(( ))、命令列編輯 |
| 1987 | TCSH 問世 | csh 的現代化:可編程補全、命令列編輯、拼字修正 |
| 1988 | Bash 誕生(GNU 專案) | 自由軟體基金會的 POSIX 相容 shell,Bourne Again Shell |
| 1989 | Bash 1.x 與交互式強化 | 歷史命令、別名、!! 事件指定符、命令列編輯(readline) |
| 1990 | Zsh 誕生 | 集大成者:可編程補全、主題化提示符、極致可客製化 |
| 1991 | Linux 問世與 GNU 工具鏈 | bash 成為 Linux 世界的預設 shell,開源生態確立 |
| 1992 | POSIX.2 Shell 標準化 | IEEE 1003.2:以 Bourne Shell 為基礎的統一 shell 語言規範 |
| 1995 | Fish 的前夜與腳本語言分化 | Perl/Python 崛起,shell 退守「系統管理」本業 |
| 2000 | Bash 2.0:重寫與陣列 | array 變數、$( ) 嵌套改進、國際化、新的解析器架構 |
| 2005 | Fish 問世 | 「友善的互動式 shell」:自動建議、語法高亮、不以 POSIX 為念 |
| 2009 | Bash 4.0:關聯陣列與萬用字元強化 | declare -A 關聯陣列、** 遞迴萬用字元、&>>、coproc |
| 2010 | Oh My Zsh 問世 | zsh 設定框架,社群化外掛生態,zsh 大眾化 |
| 2014 | Shellshock 漏洞事件 | bash 25 年歷史漏洞曝光,shell 安全性的全球警鐘 |
| 2019 | macOS 改用 Zsh | macOS Catalina 以 zsh 取代 bash(GPLv3 授權因素) |
| 2023 | 現代 Shell 競爭時代 | nushell、elvish、oil shell:結構化資料管線的新典範 |
| 2025 | 未來展望 | Shell Script 在 AI 時代的角色:從膠水語言到自動化的共通介面 |
發展主軸#
- 1964–1977:從命令直譯器到程式語言 —— Thompson Shell 只會重導向,Bourne Shell 加入變數與控制流程,shell 正式成為「語言」。
- 1978–1989:交互性革命 —— csh 開創歷史命令與工作控制,ksh/bash 融合交互性與腳本性。
- 1990–2000:標準化與開源 —— POSIX 統一語法,Linux 讓 bash 成為世界預設。
- 2005–至今:體驗與結構化 —— fish、oh-my-zsh 改造使用者體驗,nushell 等新典範挑戰純文字管線。
相關書目#
- C++ 程式語言發展史 —— UNIX 與 C 是 shell 的母體
- JavaScript 程式語言發展史
- Rust 程式語言發展史