Bill Joy's C Shell Ships as Part of 2BSD, Introducing Command History
Distributed starting with the second Berkeley Software Distribution in 1979, Bill Joy's C shell introduced features — command history, aliases, filename completion — that nearly every shell since has copied in some form.
Starting with the second Berkeley Software Distribution (2BSD) in 1979, Bill Joy’s C shell (csh) shipped as part of the BSD Unix distribution — introducing a set of interactive features that nearly every shell released since has adopted in some form.
Who built it and why
Bill Joy, a graduate student at UC Berkeley at the time, designed the C shell with two explicit goals: making shell syntax read more like the C programming language, and prioritizing interactive use over scripting — a genuinely different set of priorities from the Bourne shell being developed around the same period at Bell Labs.
The features that made csh genuinely influential
The C shell introduced command history (recalling and re-running previous commands), aliases (short custom names for longer commands), tilde notation (~ referring to a home directory), and interactive filename completion — all features so useful that later shells across both the Bourne and C shell lineages eventually adopted equivalents, regardless of which family tree they otherwise descended from.
What shipped alongside it in the same release
2BSD, released in 1979, also included Joy’s vi text editor (a visual, screen-oriented mode built on top of the older ex line editor) — meaning two of Unix’s most enduringly influential interactive tools, csh and vi, both trace back to the same developer and the same specific BSD release.
Why csh’s scripting reputation diverged so sharply from its interactive reputation
Despite the C shell’s genuine interactive innovations, its scripting language developed a lasting reputation for being poorly suited to non-trivial scripts — a distinction covered in more depth in this blog’s dedicated look at tcsh and FreeBSD’s shell heritage, and a reputation specific enough that it shaped which shell family later systems, including FreeBSD, chose for actual script execution versus interactive use.
Sources: