Unix+POSIX+GNU+Linux关系
(1)Unix 是源头
1969 年诞生的 Unix 是所有类 Unix 系统的 “原型”,它的多用户多任务、一切皆文件、管道机制等设计思想,奠定了后续 GNU、Linux 的发展基础。但早期 Unix 是商业闭源系统,分支众多且兼容性差,这也催生了 POSIX 标准和 GNU 计划。
(2)POSIX 是统一规范
由于 Unix 各分支(如 BSD、AIX、HP-UX)的接口不统一,程序员开发的软件无法跨平台运行。1980 年代推出的 POSIX 标准,定义了操作系统必须提供的系统调用、命令行工具接口等,只要符合 POSIX 标准,软件就能在不同类 Unix 系统上运行。
Unix 商业版本:大多通过 POSIX 认证(需符合完整规范)。
Linux、GNU 组件:虽未通过 Unix 官方认证,但完全兼容 POSIX 标准。
(3)GNU 计划填补 “自由软件空白”
1983 年理查德・斯托曼发起 GNU 计划,目标是开发一套完全自由的类 Unix 系统。经过十余年发展,GNU 完成了编译器(GCC)、shell(Bash)、文本工具(grep、sed)、系统库(glibc) 等几乎所有用户空间组件,但内核部分(原计划是 Hurd 内核)一直未能成熟可用。
(4)Linux 内核 “补全” GNU 系统
1991 年,林纳斯・托瓦兹开发了 Linux 内核,并以 GPL 开源协议发布。由于 GNU 缺少可用的内核,开发者将 Linux 内核与 GNU 工具链组合,形成了一套完整的自由操作系统—— 严格来说应称为 GNU/Linux,但日常简称其为 Linux 系统。
总结
Linux ≠ 完整操作系统:Linux 只是内核,我们日常使用的 Ubuntu、CentOS 等,都是 “Linux 内核 + GNU 组件 + 桌面环境 / 应用” 的集合。
GNU ≠ Linux:GNU 是软件生态和项目理念,Linux 是内核;没有 GNU 组件,Linux 内核无法直接为用户提供服务。
符合 POSIX ≠ 是 Unix:POSIX 是接口标准,Linux、macOS(基于 BSD)都符合 POSIX,但它们是类 Unix 系统,而非正宗 Unix(正宗 Unix 需通过 Single UNIX Specification 认证)。
日常我们说的 “Linux 系统” 其实是简称,严格意义上应该叫 GNU/Linux,因为 GNU 组件在用户空间的占比和重要性,并不亚于 Linux 内核。