「Unix 與 Linux 是同一個作業系統嗎?」這個問題的答案既是肯定的,也是否定的。乍看自相矛盾,卻精準勾勒出兩者微妙的關係:共享 POSIX 系統呼叫介面與設計哲學,卻擁有完全獨立的核心原始碼與發展軌跡。本文從原始碼授權、系統呼叫、核心架構、Shell 環境、命令參數語法五大維度,為你拆解這對「雙生兄弟」的同與不同。
Unix 走商業授權路線,原始碼受嚴格智財保護,任何個人或組織不得隨意複製修改。Linux 則由林托瓦茲從零重寫核心,雖大量借鑑 Unix 設計思想並遵循 POSIX 標準,但零 Unix 原始碼,故擁有 GPL 授權的自由複製、修改、分發權利,是名副其實的開源核心。
Unix 衍生版本眾多 (BSD、HP-UX、Solaris…),彼此原始碼不同,但皆遵循同一套系統呼叫介面 (如 write()、open()、fork()) 與核心溝通。Linux 同樣實作 POSIX 系統呼叫,因此為 Unix 開發的應用程式幾乎無需修改即可移植至 Linux。這就是為何從「應用程式視角」看,兩者是同一系統;從「核心實作視角」看,卻是截然不同的兩套代碼。
| 項目 | Unix (典型) | Linux |
|---|---|---|
| 核心映像檔 | /stand/unix (Solaris: /kernel/genunix) | /boot/vmlinuz |
| 支援 Shell | SH、CSH、KSH、BASH (四種) | BASH (預設)、CSH、KSH (三種) |
核心檔案路徑差異直接影響升級與救援操作;Shell 種類差異則在撰寫可攜式腳本時需特別留意。
Unix 偏好 ls -l 單字母選項;Linux 兼容單字母外,大量採用 GNU 風格長選項 ls --all、ls --human-readable,且同一指令可能同時支援短長兩種形式。這導致雙平台維護工程師須隨時查閱 man 手冊確認語法,幸而在線說明文檔同樣遵循 man 機制,仍能快速釐清差異。
Unix 與 Linux 是「同一介面、異質實作」的經典案例。掌握上述差異,系統工程師即可在兩大陣營間自如切換,成為真正的跨平台專家。後續文章將繼續探討檔案系統、網路協定栈、安全模型等深層差異,敬請期待。