What is "the Unix Shell"- Bash, Fish, Ksh, Tcsh, Zsh.

Simply put, the shell is a program that takes commands from the keyboard and gives them to the operating system to perform.

What is "the Unix Shell"- Bash, Fish, Ksh, Tcsh, Zsh.

In the old days, it was the only user interface available on a Unix-like system such as Linux. Nowadays, we have graphical user interfaces (GUIs) in addition to command-line interfaces (CLIs) such as the shell.

A Shell provides you with an interface to the Unix system. It gathers input from you and executes programs based on that input. When a program finishes executing, it displays that program's output. The shell is an environment in which we can run our commands, programs, and shell scripts.

There are different flavors of a shell, just as there are different flavors of operating systems. Each flavor of the shell has its own set of recognized commands and functions.

Types of Shells


In Unix, there are two major types of shells −

  • Bourne shell − If you are using a Bourne-type shell, the $ character is the default prompt.
  • C shell − If you are using a C-type shell, the % character is the default prompt.

The Bourne Shell has the following subcategories −

  • Bourne shell (sh)
  • Korn shell (ksh)
  • Bourne Again shell (bash)
  • Z shell (zsh)

The different C-type shells follow −

  • C shell (csh)
  • TENEX/TOPS C shell (tcsh)

There are different flavors of a shell, just as there are different flavors of operating systems. Each flavor of the shell has its own set of recognized commands and functions and users typically interact with a Unix shell using a terminal emulator.


Terminal Emulator


Terminals, also known as command lines or consoles, allow us to accomplish and automate tasks on a computer without the use of a graphical user interface. It is a program that executes other programs. It provides a computer' user an interface to the Unix/GNU Linux system. The shell is much more than just a command interpreter, it is also a programming language of its own with complete programming language constructs such as conditional execution, loops, variables, functions, and many more.

These might include gnome-terminal, konsole, xterm, iTerm, terminator, and termite.