Linux for you Admin Tips:1
Linux for you Admin Tips:2
Linux for you Admin Tips:3
Linux for you Admin Tips:4
Linux for you Admin Tips:5
Linux for you Admin Tips:6
Linux for you Admin Tips:7
Linux for you Admin Tips:2
Linux for you Admin Tips:3
Linux for you Admin Tips:4
Linux for you Admin Tips:5
Linux for you Admin Tips:6
Linux for you Admin Tips:7
What is the exact difference between a 'terminal', a 'shell', a 'tty' and a 'console'?
I think these terms almost refer to the same thing, when used loosely:
- terminal
- shell
- tty
- console
What exactly do each of these terms refer to?
Ans::
In unix terminology, the short answer is that
- terminal = tty = text input/output environment
- console = physical terminal
- shell = command line interpreter
terminal is synonymous with tty. Some ttys are provided by the kernel on behalf of a hardware device
Other ttys, sometimes called pseudo-ttys, are provided (through a thin kernel layer) by programs called terminal emulators, such as Xterm (running in the X Window System),
The console appears to the operating system as a (kernel-implemented) tty. On some systems, such as Linux and FreeBSD, the console appears as several ttys,the name given to each particular tty can be “console”, ”virtual console”, ”virtual terminal”, and other variations.
a shell is a special program that interacts with a user through a controlling ttyand offers
The division of labor between the terminal and the shell is not completely obvious. Here are their main tasks.
- Input: the terminal converts keys into control sequences (e.g. Left →
\e[D
). The shell converts control sequences into commands (e.g.\e[D
→backward-char
). - Line edition, input history and completion are provided by the shell.
- The terminal may provide its own line edition, history and completion instead, and only send a line to the shell when it's ready to be executed. The only common terminal that operates in this way is
M-x shell
in Emacs.
- The terminal may provide its own line edition, history and completion instead, and only send a line to the shell when it's ready to be executed. The only common terminal that operates in this way is
- Output: the shell emits instructions such as “display
foo
”, “switch the foreground color to green”, “move the cursor to the next line”, etc. The terminal acts on these instructions. - The prompt is purely a shell concept.
- The shell never sees the output of the commands it runs (unless redirected). Output history (scrollback) is purely a terminal concept.
- Inter-application copy-paste is provided by the terminal (usually with the mouse or key sequences such as Ctrl+Shift+V or Shift+Insert). The shell may have its own internal copy-paste mechanism as well (e.g. Meta+W and Ctrl+Y).
- Job control (launching programs in the background and managing them) is mostly performed by the shell. However, it's the terminal that handles key combinations like Ctrl+C to kill the foreground job and Ctrl+Z to suspend it.
No comments:
Post a Comment