Bash Tutorial · Bash Basics · Lesson 7 of 30
Bash History & Versions
Where the Unix shell came from, how Bash became the default shell of Linux, every major Bash release on one timeline, the Shellshock vulnerability, and which version you're likely to meet today.
How Bash started
The first Unix shell was Ken Thompson's, in 1971. In 1979, Version 7 Unix shipped the Bourne shell
(sh), written by Stephen Bourne at Bell Labs: it added the scripting features shells still use, such as
variables, if, for, case and here-documents. Other shells followed, including the C shell (1978) and the
KornShell (1983).
The GNU Project needed a free shell compatible with sh. Brian Fox wrote it, and the first beta of the
Bourne Again SHell, version 0.99, appeared on 8 June 1989. Chet Ramey took over maintenance in the early
1990s and still maintains it. Because Linux distributions are built from GNU tools, Bash became the default shell on
almost every Linux system, and later the language of countless build, deployment and CI scripts.
Timeline of major releases
- 5.3Current
- Command substitution without a subshell (
${ cmd; }), GLOBSORT, and many fixes
- Command substitution without a subshell (
- 5.2Supported
- The version in Ubuntu 24.04 and Debian 12; better compatibility modes and loadable builtins
- 5.1Historic
SRANDOM,wait -p, and Readline improvements
- 5.0Historic
EPOCHSECONDS,EPOCHREALTIMEandBASH_ARGV0
- 4.4Historic
${var@Q}and other transformation operators
- 4.0Historic
- Associative arrays,
**globstar,coprocand|&
- Associative arrays,
- 3.2Historic
- The last version under GPLv2, which is why macOS still ships it
- 3.0Historic
- Regular-expression matching with
[[ =~ ]]
- Regular-expression matching with
- 2.0Historic
- Arrays and many new expansions
- 1.0 betaHistoric
- Brian Fox releases the first public beta (0.99)
Turning points
- POSIX (1992): the POSIX shell standard defined a portable
sh; Bash implements it plus its own extensions. Scripts with#!/bin/shshould only use POSIX features, since/bin/shis Dash on Debian and Ubuntu. - Shellshock (September 2014): CVE-2014-6271 let attackers run commands through crafted environment variables, exposing web servers that passed request data to Bash (CGI). It was patched within days and made "keep your shell updated" an operations lesson.
- macOS switches to zsh (2019): macOS Catalina made zsh the default shell; the bundled Bash stays at 3.2 for licensing reasons, so install a current Bash with Homebrew if you need Bash 4+ features.
- Containers and CI (2010s): Dockerfiles and CI pipelines made shell scripting a daily skill for most developers.
Which version should I use?
Use what your distribution ships (Bash 5.x on current Linux). If scripts must also run on macOS's Bash 3.2, avoid associative arrays and other 4.0+ features, or require a newer Bash explicitly.
Further reading: Bash home page · Bash release archive · Bash NEWS
Last reviewed 21 October 2026. Release and support dates come from the official release pages linked above.