Why You Should Learn Shell Scripting: An Introduction to the Different Types of Shell

A subtle introduction to shells

A shell is a program that takes commands from the keyboard and gives them to the operating system to perform. In the early days of computing, before the mouse and graphical user interfaces, the shell was the primary way that users interacted with the operating system. Even today, many users find the shell to be a more efficient way to work than a graphical user interface. The term “shell” can refer to the interface itself, or to the programs that implement the interface. Some of the shells out there include:


The most common shell in Unix is the Bourne shell, which is named after its developer, Stephen Bourne. The Bourne shell is the traditional shell in Unix and it is also the shell used in the popular Linux operating system. The Bourne shell is also available on many other Unix systems.

You will definitely find some useful tips on how to use the Bash shell in my shell tools series. You can subscribe to my mailing list to get the latest updates on this series.

C shell

The C shell, developed by Bill Joy, was designed to be more like the programming language C. The C shell is available on most Unix systems.

C shell's syntax is very similar to the C programming language, hence its name. While the C shell is not as widely used as the Bourne shell or the Korn shell, it does have its adherents. The C shell is especially popular on systems where the Bourne shell is not available, such as on older versions of Microsoft Windows.

One of the advantages of the C shell is that it is easy to learn for users who are already familiar with the C programming language. The C shell also has some features that are not found in other shells, such as history substitution and the ability to define aliases.

The C shell has been criticized for some of its shortcomings, such as its lack of support for nested loops and its inability to handle certain types of input (such as input that contains spaces). However, it is still widely used and has become an important part of the Unix shell family.

Korn shell

The Korn shell, developed by David Korn, is an extension of the Bourne shell that adds many features of the C shell. The Korn shell is available on many Unix systems.

The Korn Shell is based on the Bourne Shell, with additional features added to make it more powerful and flexible. It includes features such as command history, aliasing, job control, and a built-in programming language. The Korn Shell is also compatible with the Bourne Shell, so scripts written for the Bourne Shell will also work in the Korn Shell.

The Korn Shell has been ported to a number of different platforms, including Linux, macOS, and Microsoft Windows. It is included as the default shell in some Linux distributions, such as Fedora.

Z shell

The Z shell, developed by Paul Falstad, is a combination of the Bourne shell and the Korn

Z shell (Zsh) is a Unix shell that can be used as an interactive login shell and as a powerful command interpreter for shell scripting. Zsh is an extended Bourne shell with many improvements, including some features of Bash, ksh, and tcsh.

Zsh has been ported to Windows and is available as a Cygwin package.

Some of the notable features of Zsh include:

  • Command history
  • File completion
  • Spelling correction
  • Extended globbing
  • Customizable prompt
  • Customizable keyboard bindings
  • Built-in support for various shells, including Bash, ksh, and tcsh

Zsh is a highly configurable shell. Its configuration files are located in the ~/.zsh directory. The main configuration file is ~/.zshrc.

Zsh can be invoked either as an interactive login shell or as a command interpreter for shell scripting.

To invoke Zsh as an interactive login shell, use the -l option:

$ zsh -l

To invoke Zsh as a command interpreter for shell scripting, use the -c option:

$ zsh -c 'script-name'

Fish shell (my personal favorite)

I'm a little fishy and I know it.

If you're a developer or power user, there's a good chance you spend a lot of time at the command line. The command line is a very powerful tool, but it can also be quite intimidating. If you're looking for a more user-friendly and feature-rich command line interface, you should check out fish shell.

Fish shell is a command line shell for Unix-like operating systems. It is based on the shell scripting language Bourne shell and aims to be more user-friendly and feature-rich than other shells.

Fish shell comes with many features that other shells don't have. For example, it has auto-completion for commands, variables, and files. It also has syntax highlighting, which can make working at the command line much easier on the eyes.

Another great feature of fish shell is its built-in documentation. If you forget a command or want to know more about a particular feature, you can simply type "help" followed by the name of the command. This will bring up the built-in documentation for that command.

If you're looking for a better command line experience, you should definitely check out fish shell.

side note - I am writing a series about Shell Tools and you can find out how to customize your fish shell to do amazing things for you.. You can also get notified when I posted a new article


Shell scripting is a powerful tool that can automate many tasks and make life much easier for system administrators and power users. If you're not already familiar with shell scripting, now is a great time to learn. This article has given a brief introduction to the different types of shell scripting languages and some of the advantages of learning shell scripting. With a little practice, you'll be able to write your own shell scripts to automate tasks and save yourself a lot of time.