Administrator
Published on 2025-07-30 / 0 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)

构建工具

编译与构建管理

makeautoconf

文件工具

文件操作命令

lscatrmcp

调试器

程序调试

gdb(GNU Debugger)

库函数

C标准库

glibc

软件包管理

通用安装机制

targzippatch

文档系统

帮助文档与手册

infoman

核心工具集

基础命令

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