(001)Linux下的终端和shell概念
十年运维系列之基础篇 - Linux
作者:曾林
联系:1494445739@qq.com
版权:文章未经同意请勿转载
一、引言
本小节中简单讲解一下终端的概念,终端这个概念也是普遍迷惑Linux新手们的一个不太容易理解又模糊的概念。
二、伪终端
图形界面下的命令行窗口,叫做伪终端。但是这个伪终端是跟那个脱离图形界面的、黑漆漆的、按Alt+Ctrl+F1~F6组合键出来的那个终端而说的。伪终端的工作方式是在桌面上申请一个窗口,然后在里面模拟显示出一个黑漆漆的界面。比如Gnome终端、Konsole终端、xterm终端、urxvt终端等等。
三、虚拟终端
虚拟终端就是那些没有图形界面,像DOS那样的命令行。虚拟终端就是把一台全功能的电脑(比如咱们的PC)通过软件模拟成另外一台计算机的终端设备。
四、终端
其实终端最初是一种输入/输出硬件设备,有键盘显示器和连接主机的接口电缆,是过去大中小型计算机上的概念。咱们用的PC(也就是微型机)是没有终端这个概念的。
以上介绍了终端、虚拟终端、伪终端。有些人可能会有所顾忌,觉得在这些终端里面执行的Linux命令不是真正的Linux命令。这里其实需要澄清一个概念,那就是终端本身是不会解析命令的。它只是一个界面而已,是负责人机交互的一个接口而已。真正处理命令的并不是这些终端,真正处理命令行的是shell。终端只是负责提供一个输入命令的交互界面而已,在里面运行的命令并不归终端界面去解析,而是找到专门的命令行程序,这种程序我们一般将其称之为shell。
五、shell
Linux本质上是一个内核,这个内核可以用来做很多的事情,整个电脑都归内核来管理。显卡、声卡、内存、硬盘,以及硬盘上的各种程序也归内核调度。那么,内核让硬件、软件去做什么事情呢?内核本身是不清楚的,它需要接受指令,那么下指令的是谁呢?就是人类用户。
可以人类用户要做什么操作,靠嘴说是无济于事的。因为内核根本就不会懂。因此就需要一个软件来作为人机之间的桥梁,这个软件可以将人类的操作意图转述给内核,那么这个软件就是shell。它就像一个罩在操作系统和人之间的一个外壳一样,在人和操作系统之间传达着信息。
shell广义上可以指操作系统和用户接口的界面,图形界面也是一种shell。因为图形界面的本质也是实现“把人类用户的操作意图转述个内核”。
六、shell和终端的关系
shell是一个程序,一个二进制可运行可执行的程序,一般情况下,我们并不会感觉它的存在,因为我们很少主动去调用它,除非我们人为去执行bash程序。那么shell跟终端有什么关系呢?
shell和终端的关系就是终端程序会自动调用shell程序。体现在每次打开终端(伪终端、虚拟终端)的时候,终端程序都会去调用shell。终端调用终端程序成功的情况下,终端就会显示如下的信息:
[user@host ~]$
其中user指示的就是登录人是谁,host指示登录到的主机,~表示当前操作目录,$表示的是命令提示符(如果登陆人是root的话就显示为#),表示等待输入命令。