控制台,终端,虚拟终端,tty,shell等概念的区别

原创 2014年03月01日 10:09:28

控制台,终端,tty,shell等概念的区别

使用linux已经有一段时间,却一直弄不明白这几个概念之间的区别。虽然一直在用,但是很多概念都感觉模糊不清,这样不上不下的状态实在令人不爽。下面就澄清一下这些概念。

这些概念本身有着非常浓厚的历史气息,随着时代的发展,他们的含义也在发生改变,它们有些已经失去了最初的含义,但是它们的名字却被保留了下来。

控制台(Console)

控制台(Console)是物理设备,用于输入输出,它直接连接在计算机上,是计算机系统的一部分。计算机输出的信息会显示在控制台上,例如BIOS的输出,内核的输出。

终端(Terminal)

终端(Terminal)也是一台物理设备,只用于输入输出,本身没有强大的计算能力。一台计算机只有一个控制台,在计算资源紧张的时代,人们想共享一台计算机,可以通过终端连接到计算机上,将指令输入终端,终端传送给计算机,计算机完成指令后,将输出传送给终端,终端将结果显示给用户。

虚拟控制台(Virtual Console),虚拟终端(Virtual Terminal)

虚拟控制台(Virtual Console)和虚拟终端是一样的。我们只有一台终端(物理设备),这是我们与计算机之间的用户接口。假如有一天,我们想拥有多个用户接口,那么,一方面我们可以增加终端数目(物理设备),另一方面,还可以在同一台终端(物理设备)上虚拟出多个终端,它们之间互相不影响,至少看起来互相不影响。这些终端就是虚拟终端。

在Ubuntu中,我们按下Ctrl+Alt+Fx时,会进入第x个虚拟终端,一共有七个虚拟终端,其中第七个虚拟终端,就是我们默认使用的图形用户界面。

终端模拟器(Terminal Emulator)

我们知道,终端是一种物理设备,而终端模拟器(Terminal Emulator),是一个程序,这些程序用来模拟物理终端。图形用户界面中的终端模拟器一般称为终端窗口(Terminal Window),我们在Ubuntu下打开的gnome-terminal就属于此类。

tty

tty的全称是TeleTYpewriter,这就是早期的终端(物理设备),它们用于向计算机发送数据,并将计算机的返回结果打印出来。显示器出现后,终端不再将结果打印出来,而是显示在显示器上。但是tty的名字还是保留了下来。

在Ubuntu中,我们按下Ctrl+Alt+F1时,会进入第1个虚拟终端,你可以看到屏幕上方显示的tty1。

shell

shell 和之前说的几个概念截然不同,之前的几个概念都是与计算机的输入输出相关的,而shell是和内核相关的。内核为上层的应用提供了很多服务,shell在内核的上层,在应用程序的下层。例如,你写了一个 hello world 程序,你并不用显式地创建一个进程来运行你的程序,你把写好的程序交给shell就行了,由shell负责为你的程序创建进程。

我们在终端模拟器中输入命令时,终端模拟器本身并不解释执行这些命令,它只负责输入输出,真正解释执行这些命令的,是shell。

我们平时使用的sh, bash, csh是shell的不同实现。

  • sh sh这个概念本身就有岐义,它可以指shell程序的名字,也代表了shell的实现。

    Thompson shell是第一个Unix shell,由 Ken Thompso于1971年在Unix第一版本中引入,shell的程序名即为sh。Bourne shell作为Thompson shell的替代,由 Stephen Bourne于1977年在Unix第七版中引入,它的程序名也是sh。Bourne shell不仅仅是一个命令解释器,更作为一种编程语言,提供了Thompson shell不具备的程序控制功能,并随着 Brian W. Kernighan 和 Rob Pike 的 The UNIX Programming Environment的出版而名声大噪。

  • csh csh全称为 C Shell,由 Bill Joy在70年代晚期完成,那时候他还是加州伯克利大学的研究生。tcsh是csh的升级版。与sh不同,csh的shell脚本,语法接近于C语言。

  • bash bash是由 Brian Fox为GNU项目开发的自由软件,作为Bourne shell的替代品,于1989年发布。是Linux和Mac OS X的默认shell。bash的命令语法是Bourne shell命令语法的超集,从ksh和csh借鉴了一些思想。

好了,就写到这里,上面的内容是我参考维基百科后写下的,不保证完全正确, 下面还提供了一些资料,如果有兴趣可以阅读一下。

扩展阅读

  1. What is the exact difference between a 'terminal', a 'shell', a 'tty' and a 'console'?

  2. shell,bash,zsh,console,terminal到底是什么意思,它们之间又是什么关系?

  3. shell、控制台、终端的区别

  4. Why is a virtual terminal “virtual”, and what/why/where is the “real” terminal?

终端、虚拟终端、shell、控制台、tty的区别

最近开始接触Linux,终端、虚拟终端、shell、控制台、tty等概念让我很混乱,有必要认识清楚。 今天看到有人问终端和控制台的区别,而且这个问题比较有普遍性,因此想抽出一点时间来解释一下这两个...
  • ltx06
  • ltx06
  • 2016年08月10日 15:31
  • 5248

关于终端,tty,shell之间的定义区别和关系

refer from  http://blog.chinaunix.net/uid-28596231-id-3516101.html 先说说什么是终端。 百度百科:终端 Termina...
  • samssm
  • samssm
  • 2013年12月27日 13:36
  • 3968

几款Ubuntu下的终端扩展工具推荐

作为一个经常喜欢敲命令的人,可能要同时做很多操作,Linux各个桌面的窗口切换有多那啥,这里就不吐槽了, 我总是在想要做另外一个操作,但又不想结束当前的工作,之前我习惯于再打开一个终端,但是后来终端越...
  • Lina_ACM
  • Lina_ACM
  • 2016年12月05日 18:01
  • 2027

Linux下的consolen(控制台)和terminal(终端)

console和terminal是很容易让人迷惑的两个概念。要本质上区别这两个名词背后的差异,应该从它的使用角度去区分。     terminal(终端),其实是处于用户使用系统的角度来说的,相对于...
  • XscKernel
  • XscKernel
  • 2013年01月25日 20:11
  • 9866

linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解

首先:1。终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念.一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种....
  • liaoxinmeng
  • liaoxinmeng
  • 2009年12月14日 15:59
  • 35849

linux的终端,网络虚拟终端,伪终端

Linux上许多网络服务应用,如l2tp、pptp、telnet,都用到了伪终端。有朋友在问这方面的概念,把偶知道的写下来,以供讨论。 一、终端 要理解伪终端(Pseudo Terminal),先来...
  • TODD911
  • TODD911
  • 2012年09月27日 16:35
  • 6165

终端中常用的shell 命令

Mac 在shell命令终端中,Ctrl+n相当于方向向下的方向键,Ctrl+p相当于方向向上的方向键。 在命令终端中通过它们或者方向键可以实现对历史命令的快速查找。这也是快速输入命令的技巧...
  • menxu_work
  • menxu_work
  • 2014年04月23日 09:06
  • 5239

[Python]控制终端输出文字

class bcolors: HEADER = '\033[95m' OKBLUE = '\033[94m' OKGREEN = '\033[92m' ...
  • cn_wk
  • cn_wk
  • 2017年10月25日 19:49
  • 189

终端执行python脚本 (for Mac)

cd 到文件夹目录 在文件首行添加#!/usr/bin/env python 添加权限 chmod 777 filename.py 执行脚本./filename.py 简单脚本:files.py#!/...
  • hi_chen_xingwang
  • hi_chen_xingwang
  • 2016年06月02日 19:17
  • 15285

Linux上有哪些好的终端模拟器?

注:本文转载自linux中国的文章:Linux上有哪些好的终端模拟器? ,请支持原创! 一个好的终端模拟器是一个选择Linux而不是Windows或Mac的充分理由,任何Linux的资深用户...
  • chentiefeng521
  • chentiefeng521
  • 2016年09月20日 21:06
  • 3175
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:控制台,终端,虚拟终端,tty,shell等概念的区别
举报原因:
原因补充:

(最多只允许输入30个字)