Terminal vs Shell

Updated: 2021-09-18

TL;DR: Terminal is the "dumb" window frame that takes user input and shows result; Shell is the software that takes input from the Terminal, executes commands, and sends results back to the Terminal.

Terminal

Terminal is "dumb": it is a text-based environment that takes input and shows text as output, the actual computing work is done at the other end in a mainframe, or by a SHELL in a modern computer.

Teletypewriter (TTY) was the first kind of terminal. It uses a typewriter to take your input, and automatically type out the responses. (without a screen!)

Later, a Terminal or a Console is referring to the physical device, which includes a screen and a keyboard.

Pseudo Terminals (PTY) are terminal emulators or software interfaces that emulate terminals. The "Terminal" we are talking in these days are most likely Pseudo Terminals.

Terminal Options:

  • Terminal.app is the default terminal on macOS.
  • iTerm2 is a replacement for Terminal on macOS.
  • xterm is the standard terminal emulator of the X Window System.
  • GNOME Terminal is the standard terminal emulator of the GNOME project.
  • Konsole is the terminal emulator that ships with KDE.
  • tmux and GNU Screen: Terminal multiplexers.
  • Windows Terminal and PuTTY: for Windows.

Shell

A shell takes user input from the terminal, executes commands, talks to Kernel if needed, and sends output back to the terminal for display.

Shell Options:

  • bash: the default Shell on most Linux and also on macOS
  • bash alternatives: zsh, ksh, etc
  • PowerShell: for Windows