What is the exact difference between a ‘terminal‘, a ‘shell‘, a ‘tty‘ and a ‘console‘?
A terminal is at the end of an electric wire
A shell is the home of a turtle
The tty is a strange abbreviation
A console is a kind of cabinet.
Well, etymologically speaking, anyway.
In unix terminology, the short answer is that
- terminal(终端) = tty = text input/output environment
- console(控制台) = physical terminal
- shell = command line interpreter
自学Linux的时候,我们用的显示器+键盘 是物理终端。Linux开机后,会在物理终端(显示器)之上,以软件的方式虚拟出多个终端,CentOS是6个。Ctrl+Alt+F1~6切换
默认情况下,linux启动后都是从虚拟终端1登陆,而不会使用物理终端,即便在物理终端上。物理终端只在刚开机那一会儿,Linux还没有运行起来的时候有用。一旦程序启动完成便由虚拟终端1接管了。
物理终端:直接接入本机的显示器和键盘设备
虚拟终端:附加在物理终端之上的以软件方式虚拟实现的终端,CentOS默认启动6个虚拟终端。Ctrl+Alt+F1~6切换
设备文件路径:/dev/tty#
图形终端:附加在物理终端之上的以软件方式虚拟实现的终端,但会额外提供桌面环境,这里边的终端称为模拟终端
模拟终端:图形界面下打开的命令行窗口。基于ssh协议或者telnet协议等远程打开界面的终端也叫模拟终端,例如使用xshell连环境
设备文件路径:/dev/pts/# [0~无穷大]
查看当前终端命令:tty
终端是用来交互的,启动终端后,在终端设备上会附加一个交互式应用程序,交互式应用程序分2种。GUI和CLI
GUI: GNOME、KDE等等。
CLI: shell程序。例如sh、csh、ksh、bash、zsh等等。
查看我当前用户的是什么shell?
root@debian:~# echo $SHELL /bin/bash
查看当前linux支持的shell类型
root@debian:~# cat /etc/shells # /etc/shells: valid login shells /bin/sh /bin/dash /bin/bash /bin/rbash