Shells are similar to brands. Everyone has a favorite that they fervently support and, every now and again, tell you why you should switch. The many types of shells in Linux may have varied features, but at their foundation, they’re simply implementing ideas that have been around for decades.
So, let’s start with a little history of contemporary shells, then look at some of the helpful, open source shells available for Linux today, and you can determine for yourself whether or not learning Linux would be advantageous to you.
The Bourne shell made its debut. Stephen Bourne’s Bourne shell(sh) for V7 UNIX, created at AT&T Bell Labs, is still a useful shell today (in some cases, as the default root shell). Because the Bourne shell was created after working on an ALGOL68 compiler, its syntax resembles that of Algorithmic Language (ALGOL) more than that of other shells. C was used to create the source code.
The Bourne shell was designed to accomplish two main objectives:
- The command line interpreter executes UNIX/Linux commands for the operating system.
- Scripting is the process of creating reusable scripts that can be run from the command line.
The Bourne shell, in addition to replacing the Thompson shell, had several additional benefits over its predecessors, including the ability to include control flows, loops, and variables into scripts, resulting in a more functional language for interacting with the operating system.
The shell also allowed you to utilize shell scripts as filters, allowing you to handle signals with ease, although it lacked the ability to define functions.
It provided a lot of capabilities that we still use today, such as command substitution and the ability to insert preserved string literals within a script using HERE documents. The Bourne shell paved the way for the many shells we use today.
Bill Joy created the C shell (csh) with the goal of creating a scripting language that was analogous to the C programming language. This was advantageous because C was the dominant programming language at the time, making it easier and faster to use.
The Korn Shell(ksh) was created by David Korn and incorporated features from both Bourne Shell and C Shell. The Bourne Shell is backwards compatible with it. It contained C Shell features including job management, command aliasing, and command history.
The TENEX C Shell(tcsh) was also released in the same year. It began as a C Shell derivative with the addition of programmable command line completion and editing tools.
The Bourne-Again Shell (bash) was created by Brian Fox for the GNU project as a pre-software replacement for the Bourne Shell. It is one of the most frequently used shells today. It had all of the capabilities of the Bourne shell, but it was far more efficient and simpler to use. For conditional testing and iteration, it allowed filename globbing, piping, command replacement, and control structures.
Many shells emerged afterwards, such as the Public Domain Korn Shell, the Almquist Shell, and the Extensible Shell, each with its own set of features and dialects suited for a variety of purposes.