一、引子:Linux 真的是 Linux 吗?
你可能每天都在使用所谓的“Linux”操作系统,无论是 Ubuntu、Debian,还是 CentOS、Red Hat。但是如果你打开终端运行:
bash
gcc
make
ls
top
cat
rm
你有没有想过:
👉 这些命令,真的来自 Linux 吗?
其实,它们的真正来源,绝大部分都不是 Linux,而是——GNU 项目(GNU Project)。
二、GNU 是什么?
1. 名称释义
GNU 是递归缩写:
GNU's Not Unix(GNU不是Unix)
也就是说:GNU 致力于创建一个完全自由、类 Unix 的操作系统,但不基于 Unix,也不包含 Unix 代码。
2. 发起背景
时间:1983 年
创始人:理查德·斯托曼(Richard Stallman)
初衷:反抗 Unix 系统的专有化,建立一个用户可以自由使用、修改和再分发的操作系统生态
这也成为**自由软件运动(Free Software Movement)**的开端。
三、Linux ≠ GNU?它们是什么关系?
Linux(严格意义):是由 Linus Torvalds 在 1991 年开发的 内核(kernel)。
GNU:提供的是除内核以外的 完整操作系统工具链和用户空间组件。
也就是说:
我们现在所说的 “Linux 操作系统”,其实应该叫:
GNU/Linux
四、GNU 的组成部分有哪些?
GNU 项目构建了一个完整操作系统所需的所有模块,以下是几个核心工具:
这些工具几乎是我们每天接触 Linux 命令行的核心部分,而它们几乎都属于 GNU。
五、实际举例:你每天都在用 GNU
示例 1:写一个 C 程序,谁在背后工作?
#include <stdio.h>
int main() {
printf("Hello, world!\n");
return 0;
}
编译命令:
gcc hello.c -o hello
gcc
是 GNU 编译器编译过程中调用的是 GNU 的
ld
链接器程序依赖 GNU 的
glibc
标准库如果调试,还用到
gdb
👉 所有这些都不是 Linux 内核的一部分,而是 GNU 提供的工具链。
示例 2:基础命令来自哪儿?
ls -l
cat /etc/passwd
rm test.txt
查看命令来源:
which ls
# /usr/bin/ls
ls --version
# ls (GNU coreutils) 8.32
可以发现,这些命令都来自 GNU 的 coreutils
包。
示例 3:bash shell
echo $BASH_VERSION
# 5.1.16(1)-release
which bash
# /usr/bin/bash
bash
全称是 Bourne Again Shell它是 GNU 编写的 Shell,取代原 Unix 的 sh
是大多数 Linux 发行版的默认终端交互环境
六、GNU 与开源的关系?
自由软件 vs 开源软件
虽然两者目标一致,但GNU 更强调道德与自由,而开源更偏工程与商业实践。
七、常见误区澄清
八、今天 GNU 还活跃吗?
✅ 非常活跃!
GNU 工具链仍在更新
GCC 仍是世界范围内应用最广泛的编译器之一
Debian、Trisquel 等发行版明确称为 GNU/Linux
GNU 也支持与其他内核配合,如 Hurd(GNU 自研内核),尽管未普及
九、结语:GNU 是你我日常使用的“隐身英雄”
如果你每天在 Linux 终端中工作、编译代码、查日志、部署服务,那么你每天都在使用 GNU。
GNU 是我们使用自由操作系统的前提,是“非商业、用户自主权”的象征。
正如 Stallman 所说:
“自由不是你是否花钱,而是你是否掌握对工具的控制权。”
附:推荐资源
GNU Manifesto(英文原文)
《Free Software, Free Society》(理查德·斯托曼演讲集)
GNU/Linux 历史纪录片《Revolution OS》