Administrator
Published on 2025-07-30 / 120 Visits
0
0

【自由软件的奠基者】你真的了解 GNU 吗?一篇让你彻底弄懂 GNU 背后的一切

一、引子: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 项目构建了一个完整操作系统所需的所有模块,以下是几个核心工具:

模块

功能

常见组件

Shell

命令行解释器

bash(Bourne Again Shell)

编译器

程序构建

gcc(GNU Compiler Collection)

构建工具

编译与构建管理

make、autoconf

文件工具

文件操作命令

ls、cat、rm、cp 等

调试器

程序调试

gdb(GNU Debugger)

库函数

C标准库

glibc

软件包管理

通用安装机制

tar、gzip、patch 等

文档系统

帮助文档与手册

info、man

核心工具集

基础命令

coreutils 包含基础命令如 date, who, hostname

这些工具几乎是我们每天接触 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 开源软件

术语

创始人

强调点

自由软件(Free Software)

Stallman(GNU)

用户自由使用、修改、再发布

开源软件(Open Source)

Eric Raymond

鼓励协作与商业化,但弱化“自由”概念

虽然两者目标一致,但GNU 更强调道德与自由,而开源更偏工程与商业实践。


七、常见误区澄清

误区

正确解释

“Linux 是一个完整操作系统”

❌ 其实 Linux 是一个内核

“GNU 是个软件”

❌ GNU 是一个完整的系统项目,包含工具链、Shell、库等

“没有 GNU 也能用 Linux”

❌ Linux 本身几乎不提供用户工具,没有 GNU 基本无法交互


八、今天 GNU 还活跃吗?

✅ 非常活跃!

  • GNU 工具链仍在更新

  • GCC 仍是世界范围内应用最广泛的编译器之一

  • Debian、Trisquel 等发行版明确称为 GNU/Linux

  • GNU 也支持与其他内核配合,如 Hurd(GNU 自研内核),尽管未普及


九、结语:GNU 是你我日常使用的“隐身英雄”

如果你每天在 Linux 终端中工作、编译代码、查日志、部署服务,那么你每天都在使用 GNU。

GNU 是我们使用自由操作系统的前提,是“非商业、用户自主权”的象征。

正如 Stallman 所说:

“自由不是你是否花钱,而是你是否掌握对工具的控制权。”


附:推荐资源

  • 官网:https://www.gnu.org

  • GNU Manifesto(英文原文)

  • 《Free Software, Free Society》(理查德·斯托曼演讲集)

  • GNU/Linux 历史纪录片《Revolution OS》



Comment