答案1:
The shell is a typical Unix program. It reads commands from the standard
input and prints something on the standard output. This is simple and
good.
The points is: In a graphical environment (like GNOME or KDE) a
program cannot just write text directly on the desktop. If the programs
could, this would quickly become a mess and chaos. Therefore you need a
program that provides a space where other programs can write their text.
That program also accepts keystrokes from the user and converts them
into byte sequences, since this is what many programs (command-line,
text based, not GUI) expect. All this is the job of the GNOME Terminal
application.
So you have the shell (probably bash), and wrapped around it is the
GNOME terminal. To see what exactly the GNOME terminal does you can run
(Alt+F2) gnome-terminal, xterm and rxvt in between and see where they
are different and what they have in common.
答案2:
In the linux world they can all look the same from the point of view of
the user at the keyboard. The differences are in how they interact with
each other.
The shell is the program which actually processes commands and
returns output. Most shells also manage foreground and background
processes, command history and command line editing. These features (and
many more) are standard in bash, the most common shell in modern linux
systems.
A terminal refers to a wrapper program which runs a shell. Decades
ago, this was a physical device consisting of little more than a monitor
and keyboard. As unix/linux systems added better multiprocessing and
windowing systems, this terminal concept was abstracted into software.
Now you have programs such as Gnome Terminal which launches a window in a
Gnome windowing environment which will run a shell into which you can
enter commands.
The console is a special sort of terminal. Historically, the console
was a single keyboard and monitor plugged into a dedicated serial
console port on a computer used for direct communication at a low level
with the operating system. Modern linux systems provide virtual
consoles. These are accessed through key combinations (e.g. Alt+F1 or
Ctrl+Alt+F1; the function key numbers different consoles) which are
handled at low levels of the linux operating system — this means that
there is no special service which needs to be installed and configured
to run. Interacting with the console is also done using a shell program.
What are the differences between shell , console & terminal?