(001)Linux下的终端和shell概念

十年运维系列之基础篇 - Linux

作者:曾林 

联系:1494445739@qq.com

网站:www.jplatformx.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的话就显示为#),表示等待输入命令。

 

posted @ 2015-03-25 17:25  jplatformx  阅读(4916)  评论(0编辑  收藏  举报