Paul Falstad Releases Zsh, Combining Ideas From ksh, tcsh, and rc
Posted to Usenet by a Princeton student in 1990, Zsh combined the strongest interactive features of several existing shells, decades before becoming macOS's default.
In 1990, Paul Falstad, then a student at Princeton University, released the first version of Zsh, posting it to the alt.sources Usenet newsgroup — a shell that would, decades later, become the default on one of the world’s most widely used desktop operating systems.
What Zsh actually combined
Rather than starting from a single existing shell’s design, Zsh deliberately combined features from ksh (the Korn shell), tcsh, and, to a lesser extent, rc — bringing together programmable command-line completion, extended file globbing, richer variable and array handling, and themeable prompts into one shell.
Where the name actually came from
Zsh’s name has a specific, documented origin distinct from any technical acronym: it references the login ID of Zhong Shao, a teaching assistant at Princeton during Falstad’s time there, who later became a professor at Yale.
Why Zsh remained a minority choice for most of its early history
Despite its interactive capabilities, Zsh remained a secondary shell choice relative to Bash for most Unix and Linux users through the 1990s and 2000s — Bash’s status as the GNU Project’s shell and its broad default adoption across Linux distributions meant most users simply never had reason to switch.
What eventually changed Zsh’s trajectory
Community tools built around Zsh — most notably Oh My Zsh, released in 2009, which made Zsh’s powerful but complex configuration accessible through a simple framework — gradually broadened its adoption well beyond its original niche, culminating in Apple’s 2019 decision to make Zsh the default shell in macOS Catalina, three decades after Falstad’s original release.
Confirming the naming story, since it sounds almost too tidy to be true
The Zhong Shao origin isn’t shell-community folklore that grew in the retelling — it’s directly attributable: Falstad thought Shao’s own login ID, literally “zsh” on the Princeton system both of them used, made a fitting name for the new shell he’d written, and said so himself. It’s a small detail, but a useful reminder that even a tool now running on hundreds of millions of Macs began as a genuinely personal, almost incidental naming choice rather than anything resembling a deliberate branding decision.
The technical differentiators that made Zsh worth the eventual switch
Beyond the interactive polish, Zsh’s design included genuine capability gaps relative to Bash of the era: extended globbing patterns (enabled via setopt EXTENDED_GLOB) supporting negation and more expressive matching than standard shell wildcards, built-in spelling correction for mistyped commands and filenames (setopt CORRECT), and a right-side prompt (RPS1) that displays information — a clock, exit status, git branch — aligned to the terminal’s right edge without disturbing normal input on the left. None of these individually was revolutionary, but their combination is exactly what later gave frameworks like Oh My Zsh a genuinely rich feature set to build convenient defaults around, rather than needing to invent new shell capabilities from scratch.
Why “combining ideas from three shells” wasn’t just marketing language
Falstad’s own choice to draw specifically from ksh, tcsh, and rc rather than starting from Bash or the plain Bourne shell reflected a deliberate judgment about which existing shell got which particular thing right: ksh’s scripting-oriented features, tcsh’s interactive command-line conveniences (inherited from the C shell lineage), and rc’s more structurally consistent syntax design from the Plan 9 operating system. That specific combination — interactive polish plus scripting capability plus structural cleanliness — is a large part of why Zsh could later support both power-user daily interactive use and serious scripting without forcing a tradeoff between the two.
Related:
- Robby Russell Releases Oh My Zsh to Share His Own Config With Coworkers
- How macOS Catalina Changed Zsh’s Place in the Shell Ecosystem
Sources: