What's the difference between the shell and a terminal?

Not the set up for a joke.

Both are programs, both facilitate interacting with a computer operating system. It’s easy to use both without having to think about what distinguishes the one from the other, so what is the difference?

The Shell, so named for being the outermost layer around an operating system, is the interface through which an operating system exposes its functions.

There are two types of shell: command-line shells, and graphical shells.

A terminal, or terminal emulator to give it its full name, is a program that provides access to a text-terminal/command-line interface.

Thus an operating systems graphical shell cam present a terminal emulator window through which you can interact with the OS’ command-line shell.

See also: Shells are Two Things by Fernando Borretti

References:

  1. Terminal Emulator — Wikipedia
  2. Shell (computing)) — Wikipedia