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.appis the default terminal on macOS.iTerm2is a replacement for Terminal on macOS.xtermis the standard terminal emulator of the X Window System.- GNOME Terminal is the standard terminal emulator of the GNOME project.
Konsoleis the terminal emulator that ships with KDE.tmuxandGNU Screen: Terminal multiplexers.Windows TerminalandPuTTY: 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.bashalternatives:zsh,ksh, etc.PowerShell: for Windows.