Shell Script
Shell scripts are the standard automation mechanism on Unix-like operating systems, gathering commands for a shell (command interpreter) into a text file. From the dawn of Unix in the 1970s through today, shells and shell scripting have steadily evolved through Bourne shell (1977), Bourne Again Shell (bash, 1989), and zsh (1990). The author of bash, the de facto Linux standard shell, is Brian Fox; today bash is maintained by Chet Ramey.
Origin of the Name
The name "shell" likens the program to a "shell" wrapped around the OS kernel (the core). When a user types a command, the shell interprets it and translates it into calls into the kernel. Like a literal shell, it surrounds the inside, protects it, and bridges the inside and outside.
Each shell name has its own origin. Bourne shell was named after Stephen Bourne at AT&T Bell Labs, who designed it. Bourne Again Shell (bash) layers two meanings: "Bourne again" (a successor to Bourne shell) and the English idiom "born again." zsh was named at Princeton by student Paul Falstad, reportedly after the username "zsh" of then-assistant-professor Zhong Shao.
1971-1977: From Thompson Shell to Bourne Shell
Thompson shell, Unix's original shell, was written by Ken Thompson at Bell Labs in 1971. It had simple capabilities and lacked the control structures (if statements, loops) that today's shell scripts take for granted.
In 1977, Stephen Bourne at AT&T Bell Labs released the Bourne shell (sh). Shipped with Version 7 Unix, it offered the entire foundation of modern shell scripting: variables, control structures (if / for / while / case), functions, pipes, and redirection. The culture of "write shell scripts in Bourne shell" begins here.
1989: The Birth of Bash
In 1989, as part of the GNU project, Brian Fox developed the Bourne Again Shell (bash). The name puns on "Bourne again" (a successor to Bourne) and the English idiom "born again." Bash maintained compatibility with Bourne shell while greatly improving the interactive experience: command history, line editing, refined functions, and arrays.
As Linux spread in the 1990s, most Linux distributions adopted bash as their default shell, making bash the de facto standard shell on Linux — a position it still holds in 2025. Since 1996, Chet Ramey has served as bash's maintainer and continues active development today.
1990: zsh and the Modern Landscape
In 1990, Princeton student Paul Falstad created zsh. While preserving compatibility with the Bourne shell family, zsh aimed to push interactive usability even further. Stronger glob expansion, flexible completion, and a thriving theme/plugin ecosystem (notably Oh My Zsh) made it a favorite among developers.
In 2019, with macOS Catalina (10.15), Apple switched the default shell from bash to zsh. One driver was that staying on the older bash 3.2 had grown awkward in light of the newer GPL v3 license terms. The change rolled zsh out to a much wider audience by default and accelerated its adoption.
| Year | Shell | Position |
|---|---|---|
| 1971 | Thompson shell | The first Unix shell (Ken Thompson) |
| 1977 | Bourne shell (sh) | Full-featured shell with control structures (Stephen Bourne) |
| 1978 | C shell (csh) | The shell used on BSD-family systems (Bill Joy) |
| 1983 | Korn shell (ksh) | An extended Bourne shell (David Korn) |
| 1989 | Bash | GNU's Bourne-compatible shell (Brian Fox) |
| 1990 | zsh | Interactive-focused shell (Paul Falstad) |
| 2017 | POSIX sh standard | POSIX.1-2017 updates the sh specification |
| 2019 | macOS Catalina | Default shell changes from bash to zsh |
Shell Scripts Today
Shell scripting has stayed in active service for nearly half a century. Server operations, cron-based scheduled jobs, deployment scripts, environment setup, CI/CD (Continuous Integration / Continuous Delivery) pipelines, container start scripts — across Unix-like systems, shell scripts run automation everywhere.
The question "why use shell scripts when you can write Python?" comes up often. Shell scripts have clear strengths: they call Unix commands directly, the interpreter is preinstalled (no extra tooling needed), and many tasks fit into just a few lines. Modern practice is to leave complex logic and rich data structures to Python or Go, while letting shell scripts handle automation that mostly chains commands together.
If you write to POSIX sh, your script will run on virtually every Unix-like OS (Linux, macOS, BSD, Solaris derivatives). Reaching for bash or zsh extensions trades portability for ergonomics. Selecting sh, bash, or zsh based on the target environment is the heart of how shell scripting is run today.
Related Dictionary
Shell script syntax, variables, control structures, pipes, and practical patterns are covered in detail in the Shell Script Dictionary.