终端(termimal)= tty(Teletypewriter, 电传打印机),做用是提供一个命令的输入输出环境,在linux下使用组合键ctrl+alt+T打开的就是终端,能够认为terminal和tty是同义词。linux
shell是一个命令行解释器,是linux内核的一个外壳,负责外界与linux内核的交互。shell接收用户或者其余应用程序的命令, 而后将这些命令转化成内核能理解的语言并传给内核, 内核执行命令完成后将结果返回给用户或者应用程序。当你打开一个terminal时,操做系统会将terminal和shell关联起来,当咱们在terminal中输入命令后,shell就负责解释命令。shell
在计算机发展的早期,计算机的外表上一般会存在一个面板,面板包含不少按钮和指示灯,能够经过面板来对计算机进行底层的管理,也能够经过指示灯来得知计算机的运行状态,这个面板就叫console。在现代计算机上,在电脑开机时(好比ubuntu)屏幕上会打印出一些日志信息,但在系统启动完成以前,terminal不能链接到主机上,因此为了记录主机的重要日志(好比开关机日志,重要应用程序的日志),系统中就多了一个名为console的设备,这些日志信息就是显示在console上。一台电脑有且只有一个console,但能够有多个terminal。举个例子,电视机上的某个区域通常都会有一些按钮,好比开机,调音量等,这个区域就能够当作console,且这个区域在电视上只有一个,遥控器就能够类比成terminal,terminal能够有多个。编程
linux系统上能够包含多种不一样的shell(可使用命令 cat /etc/shells 查看),比较常见的有Bourne shell (sh)、C shell (csh) 和 Korn shell (ksh),三种shell 都有它们的优势和缺点。Bourne shell 的做者是 Steven Bourne,它是 UNIX 最初使用的shell 而且在每种 UNIX 上均可以使用。bash的全称叫作Bourne Again shell,从名字上能够看出bash是Bourne shell的扩展,bash 与 Bourne shell 彻底向后兼容,而且在 Bourne shell 的基础上增长和加强了不少特性,如命令补全、命令编辑和命令历史表等功能,它还包含了不少 C shell 和 Korn shell 中的优势,有灵活和强大的编程接口,同时又有很友好的用户界面。总而言之,bash是shell的一种,是加强的shell。ubuntu