You see the term ‘Shell’ tossed around a lot these days. The Bourne Shell (sh), Bash (Bourne Again Shell), Powershell, etc. What actually is a “shell”?

Put simply, a shell is an interface that lets a user interact with the Operating System. A shell could be a command-line interface or a graphical user interface.

For the purpose of this post, we’ll be looking at command-line interface shells. I wanted to do a couple of posts about the Linux/Unix Command Line and thought it would be good to dive right in and explore a Unix (or Unix-like) Shell.

Many people will often times use words like terminal, command-line, shell, or bash interchangeably - but it’s important to note the difference. Let’s start with some terminology.


Terminology:

  • Terminal - the actual window filled with text. When most people say “terminal” they actually mean “terminal emulator” - and it does just that. It emulates an old school video or text terminal within your operating system.
    • Most Unix or Unix-like operating systems ship with a default terminal emulator, but you can install others without issue.
  • Command Line - the actual place where you enter your commands. Letters appear here when you type on your keyboard. Usually has a blinking cursor.
  • Shell - the software that runs inside the terminal window and sends your commands to the operating system. Some examples:
    • Bourne Shell and Bash
    • Powershell
    • Zsh
    • Fish Shell
    • …and many more!

How the Shell Works

Scripting

Bash

Zsh

Fish Shell

git

Originally Posted:

Like what you're reading? Subscribe for email updates! No more than once a week - and probably much less often than that! No spam - I promise!