This article Reprinted from http://www.linuxsir.org/bbs/thread362001.html? Pageon = 1
Terminal (terminal, or physical terminal ):
It is a device, not a program. Generally, it is a device that provides a command line user interface, typically a screen or keyboard, or some other physical terminal.
Virtual terminal:
The screen and keyboard are just a terminal, which may not be enough and you don't want to increase the device investment. A virtual terminal is created.
Gnome-terminal, urxvt, mlterm, xterm, and so on:
It is a program that simulates terminal devices. The difference between a virtual terminal and a virtual terminal is that it appears in a GUI window, while a program structure is different from a system control structure, but basically.
Console ):
The terminal that displays system messages is called the console. By default, all virtual terminals in Linux use the console to display system messages.
But sometimes it refers to a program of a simulated terminal device under CLI, which is the same as gnome-terminal, urxvt, mlterm, and xterm, but only the difference between CLI and GUI interfaces. Generally there are 6 console, tty1-6, CTRL + ALT + FN switch.
Shell:
It is an abstract concept. All shell operations are inside the computer and are responsible for processing Human-Computer interactions and executing scripts. It is an important part of the normal operation of the operating system.
Bash, Ash, zsh, and tcsh are specific implementations of the shell abstract concept. They are all programs that can generate a process object.
If you want to change the shell program, you can modify/etc/passwd, replace/bin/bash in it with the shell you want, or use the CHSH command to switch
Shell includes bash, Ash, zsh, tcsh, etc.
Relationship between Shell and terminal: Shell sends some information to the terminal device as appropriate, and also receives input from the terminal device. Generally, each shell process is associated with a terminal or not.