Zsh, the Z shell, is an interactive login shell and command interpreter for scripting first written by Paul Falstad in 1990 while he was a student at Princeton University. Falstad reportedly named it after a teaching assistant, Zhong Shao. From the start, Zsh aimed to combine compatibility with the established Bourne shell family with a much richer set of interactive conveniences, drawing ideas from the Korn shell, the C shell, and tcsh.
The Zsh manual documents an unusually broad feature set. Its interactive line editor, Zle, supports extensive key binding and customization; its completion system is programmable and context-aware, so the shell can offer relevant completions for command options, hostnames, process IDs, and much more. Zsh’s filename generation goes well beyond standard globbing, adding recursive matching, glob qualifiers that filter by file attributes, and extended pattern syntax. The manual also covers loadable modules that add capabilities such as TCP networking, FTP, and a calendar system, reflecting a design that treats the shell as an extensible platform.
For scripting, Zsh remains close enough to the POSIX and Bourne tradition that much sh-compatible code runs under it, though it has its own dialect with differences in word splitting, array indexing, and parameter expansion that authors must respect. The shell offers rich array and associative-array support, floating-point arithmetic, and an emulation mode that can make it behave more like sh or ksh when compatibility matters, which makes it flexible both as a daily command line and as a scripting language.
Zsh’s popularity grew enormously through community frameworks, above all Oh My Zsh, a configuration framework that bundles themes, plugins, and sensible defaults so that newcomers can adopt the shell’s advanced features without learning its full configuration language first. Themed prompts showing version-control status, autosuggestions, and syntax highlighting became signatures of the Zsh experience and drew many developers away from plain Bash.
The shell’s profile rose further in 2019 when Apple changed the default interactive shell on macOS from Bash to Zsh. Apple’s move was driven in part by a desire to ship a modern shell while avoiding the GNU General Public License version 3 used by recent Bash releases; Zsh’s permissive MIT-style license made it attractive to a commercial vendor. As a result, Zsh is now the out-of-the-box shell encountered by millions of Mac users, a notable arc for a project that began as a student’s side endeavor.