langwhy

Bash

Shell· stable, mature, slow change· since 1989 · Brian Fox · GNU Project, maintained by Chet Ramey

Command language and shell of the GNU Project, for running programs and writing scripts.

Draft from 2026-10-30, not yet checked claim by claim against its sources. Help verify it.

Born from

In 1989 Brian Fox, an employee of the Free Software Foundation, began Bash as a free alternative to the Bourne shell for the GNU Project. The Bourne shell, sh, came from Steve Bourne at Bell Labs, and Bash was meant to stay compatible with it while adding the interactive features of the Korn shell (ksh) and the C shell (csh).

What it trades away

no memory modelmemory
no type systemtypes
interpretedruns as
noneconcurrency

Cost: It keeps the Bourne shell's quirks, quoting and grammar included, so old sh scripts still run and new ones inherit the dark corners.

Where it fits

SlotFit
scripts●●●
cli●●●Built for interactive use: job control, command-line editing and history.
server●●○
systems○○○

Why it exists

In 1989 Brian Fox, who worked for the Free Software Foundation, wrote Bash as a free alternative to the Bourne shell for the GNU Project (PLDB). The shell it replaced was sh, the direct ancestor of the Unix /bin/sh, written by Steve Bourne at Bell Labs (Ramey). Bash was meant to stay compatible with sh while borrowing the useful features of the Korn shell (ksh) and the C shell (csh), and the GNU Project’s own description says it does exactly that (GNU). The most noticeable improvements over sh were for interactive use, such as job control, command-line editing and history (Ramey).

What it trades away

Bash is an sh-compatible shell, so it keeps the Bourne shell’s quirks. Its maintainer writes that the lesson repeated most often during Bash development is that the Bourne shell has dark corners and people use all of them, and that quoting and the grammar were poorly specified in the original Bourne shell description (Ramey). Scripts that look simple can therefore behave in ways their authors did not expect. Bash calls itself a command language interpreter, so it is the glue around programs rather than the place where most application code is written.

Where it won

Bash is the default shell for scripts in several places where people never choose one. GitHub Actions runs run: steps in bash on Linux and macOS runners by default (GitHub). GitLab Runner uses Sh/Bash as the default shell on Unix systems, with sh as the fallback (GitLab). It also shows where it lost ground: macOS 10.15 Catalina made zsh the default shell for new accounts, and Apple’s support page says so directly (Apple). Bash has also been a security story, since the 2014 Shellshock bug let crafted environment variables run commands in Bash through version 4.3 (Ubuntu).

Named wins

Evolution

Reacts to: sh, ksh

Weigh it against: Python, perl, Ruby, awk

Timeline

Links

website · wikipedia · docs · PLDB

Sources

  1. https://pldb.io/concepts/bash.html
  2. https://tiswww.case.edu/php/chet/bash/rose94.pdf
  3. https://tiswww.case.edu/php/chet/bash/article.pdf
  4. https://www.gnu.org/software/bash/
  5. https://ftp.gnu.org/gnu/bash/
  6. https://lists.gnu.org/r/info-gnu/2009-02/msg00018.html
  7. https://ubuntu.com/security/CVE-2014-6271
  8. https://www.scriptingosx.com/2019/06/moving-to-zsh/
  9. https://support.apple.com/en-us/HT208050
  10. https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions
  11. https://docs.gitlab.com/runner/shells/
  12. https://en.wikipedia.org/wiki/Bash_(Unix_shell)

Unverified draft, 2026-10-30.Edit the facts · edit the story · JSON · Markdown