GNU is a free software operating system project, launched in 1983, whose tools and libraries form the user space of most Linux distributions. The name is a recursive acronym for GNU’s Not Unix: the system was designed to be compatible with Unix while being built entirely from free software that users may run, study, modify and redistribute.
In Linux fundamentals, GNU matters because a typical Linux system is a combination of the Linux kernel and GNU components: the GNU C Library, the GNU Compiler Collection, the Bash shell and the core command-line utilities. This is why the complete system is sometimes called GNU/Linux, while the Linux kernel itself is only one part of it.
Origins and goals of the GNU Project
Richard Stallman announced the GNU Project in September 1983 and began development in January 1984. The goal was a complete Unix-compatible operating system free of proprietary restrictions. In 1985, the Free Software Foundation was founded to support the project and to hold copyrights that allow the licenses to be enforced.
By the early 1990s, GNU had produced most parts of an operating system, including compilers, editors, a shell and libraries, but its own kernel, GNU Hurd, was not ready for general use. When Linus Torvalds released the Linux kernel in 1991 and later placed it under the GNU General Public License, the two pieces fitted together into a usable free system.
| Year | Milestone | Significance |
|---|---|---|
| 1983 | GNU Project announced | Goal of a free Unix-like system |
| 1985 | Free Software Foundation founded | Organizational and legal support |
| 1987 | First GCC release | Free compiler for the whole system |
| 1989 | GPL version 1 published | Copyleft license for GNU software |
| 1991 | GPL version 2 published; Linux kernel released | Kernel later adopted GPLv2 |
| 2007 | GPL version 3 published | Addressed patents and locked-down devices |
GNU components in a Linux system
On a standard Linux distribution, GNU software runs almost every command a user types. The kernel manages hardware, memory and processes, while GNU programs provide the interface through which people and scripts use it.
| Package | Role | Example commands or files |
|---|---|---|
| GNU C Library (glibc) | Standard C library and system call wrappers | Used by nearly every program |
| GNU Core Utilities | Basic file, text and shell tools | ls, cp, mv, cat, sort, chmod |
| Bash | Default interactive shell on many distributions | Command line and shell scripts |
| GNU Compiler Collection (GCC) | Compilers for C, C++ and other languages | gcc, g++ |
| GNU Binutils and Make | Linking, assembling and build automation | ld, as, make |
| GRUB | Boot loader that starts the kernel | Boot menu and kernel parameters |
| GNU tar, grep, sed, gawk | Archiving and text processing | Backups and data filtering |
GNU utilities often add extensions beyond POSIX, such as long options like --human-readable. These extensions improve usability but can make scripts non-portable to systems that use BSD or minimal tool sets.
The GNU General Public License and copyleft
The legal foundation of GNU is copyleft: software may be freely used, modified and distributed, but derived works that are distributed must remain under the same free terms, with source code available. The GPL implements this principle and became the most influential free software license.
| License | Copyleft strength | Typical use |
|---|---|---|
| GPL version 2 | Strong, applies to distributed derived works | Linux kernel and many older projects |
| GPL version 3 | Strong, adds patent and anti-lockdown terms | Most current GNU programs |
| LGPL | Weak, allows linking from proprietary code | Libraries such as glibc |
| AGPL | Strong, also covers use over a network | Server software offered as a service |
Because glibc uses the LGPL, proprietary applications can run on Linux and link to the system library without becoming subject to GPL obligations. This licensing choice was essential for commercial software on Linux.
GNU, Linux and the naming question
The Free Software Foundation asks that complete systems be called GNU/Linux to credit the GNU contribution. Most users, vendors and distributions simply say Linux, and the shorter name dominates in practice. Some distributions, notably Debian, use the GNU/Linux form in official materials.
The question is not purely symbolic. Not every Linux system is a GNU system: Alpine Linux uses the musl C library and BusyBox, and Android uses the Linux kernel with its own Bionic library and almost no GNU user space. Conversely, GNU tools also run on other kernels, such as GNU Hurd and, through compatibility layers, BSD and Windows.
For administrators, the practical lesson is to check which C library and which utilities a system uses, not only which kernel it runs. Running ldd --version or inspecting the package list quickly shows whether a host or container image provides glibc and GNU tools, which affects binary compatibility and script behavior.
Common misconceptions about GNU
Several misunderstandings persist about GNU and its relationship to Linux. Clarifying them helps when comparing distributions or diagnosing portability problems:
- Free means free of charge: in GNU terminology, free refers to freedom, and selling free software is allowed.
- Linux is the whole operating system: strictly, Linux is the kernel, and most surrounding tools are GNU.
- GNU and open source are identical: the licenses often overlap, but the free software movement stresses ethical user freedom.
- All Linux shells behave the same: Bash features are not guaranteed in a POSIX shell such as dash.
- GPL forbids commercial use: commercial use is permitted; the obligations concern distribution of source code.
In plain words
GNU is a large collection of free programs that make a computer usable. It includes the commands for copying files and the shell where commands are typed. It also includes the tools that build software and the library almost every program needs.
If Linux is the engine of a car, GNU supplies much of the steering wheel, pedals and dashboard. Most systems people call Linux are really Linux plus GNU. Both parts are free for anyone to use, study and improve.
A real-world example
A developer writes a deployment script on an Ubuntu laptop using sed -i and grep -P, both of which work as expected because Ubuntu ships the GNU versions of these tools. The same script then runs inside a small Alpine-based container image in the build pipeline and fails immediately.
The cause is that Alpine provides BusyBox implementations instead of GNU utilities, and some GNU-specific options are missing or behave differently. The team either installs the GNU coreutils, grep and sed packages in the image or rewrites the script to use only POSIX-compatible options. The incident shows in practice how much of everyday Linux behavior actually comes from GNU.