Terminal vs Shell
TL;DR
- Terminal: the "dumb" window frame that takes user input and shows result;
- Shell: 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) is the first kind of terminal. It uses a typewriter to take your input, and automatically type out the responses (instead of on 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
andGNU Screen
: Terminal multiplexers.Windows Terminal
andPuTTY
: 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.