在技术领域中,gnu/linux与linux常常被混用,但实际上二者所指的范围并不相同。linux最早是内核项目名称,而gnu/linux强调系统由gnu工具链与linux内核共同构成。

什么是linux
linux是由林纳斯托瓦兹在1991年发布的一个类unix操作系统内核。它位于硬件之上,负责进程调度、内存管理、设备驱动等底层工作。单独运行的linux内核并不能直接提供给普通用户使用,因为它没有命令行解释器、没有编译器,也没有文本编辑器。
什么是gnu/linux
gnu是一个始于1983年的自由软件项目,目标是构建一套完整的类unix操作系统。到linux内核出现时,gnu已经完成了包括gcc、bash、coreutils在内的绝大多数用户态工具,只缺少一个可用的内核。将gnu工具与linux内核结合后,就形成了大众所安装的发行版系统,即gnu/linux。
组件对比
| 组成部分 | linux | gnu/linux |
|---|---|---|
| 内核 | 有 | 有 |
| shell | 无 | 有(如bash) |
| 编译器 | 无 | 有(如gcc) |
| 基础命令 | 无 | 有(如ls、cp) |
为什么容易混淆
很多文档和厂商将基于linux内核的系统简称为linux,省略了gnu部分。但在强调自由软件归属或许可证问题时,使用gnu/linux更为准确。例如使用gcc --version查看的编译器来自gnu,而非linux内核。
查看系统组件示例
在终端中可通过如下命令确认自己使用的工具来源:
# 查看bash版本,bash属于gnu项目 bash --version # 查看内核版本,linux内核由社区维护 uname -r # 查看coreutils版本,coreutils为gnu工具集 ls --version
总结
linux是内核,gnu/linux是包含该内核与gnu用户态工具的完整操作系统。日常所说的安装linux系统,实际安装的是gnu/linux发行版。分清二者有助于准确理解系统结构和软件许可证背景。