V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
jmyz0455
V2EX  ›  Linux

Linux 里的 TTY、Terminal、Shell、Console 傻傻分不清...

  •  
  •   jmyz0455 · 2016-09-20 10:11:41 +08:00 · 5344 次点击
    这是一个创建于 2777 天前的主题,其中的信息可能已经有所发展或是发生改变。

    初学 Linux ,虽然会用但是分不清 TTY 、 Terminal 、 Shell 、 Console 各种的原理和区别。网上大多答案只是啰啰嗦嗦回答了是什么,但是没有说不同点,搞得我更乱了。有深明大义的大神深入浅出地解答一下吗?

    13 条回复    2016-09-21 12:14:02 +08:00
    IgniteWhite
        2
    IgniteWhite  
       2016-09-20 10:47:44 +08:00
    啊,这种问题不需要大神回答,就由我这个初学者回答吧

    Terminal 这个应用里面运行的带字的东西是 Shell (相对于 Kernel 的可以由你控制的部分),每打开一个 Terminal 窗口就是等着你做点什么,这个窗口或者 tab 要编号,从 tty000 编起。你输入一个 ps 的指令就看到了。

    Console 是针对程序的定义……比如你用 terminal 开了一个 Minecraft 的服务器,这个服务器程序开始运行之后, terminal 窗口里就出现一行行更新的东西,最后一行还有一个“>”这样的待命符可以让你输入命令 op 玩家——这样的界面就是这个服务器的 console 。很多软件里面都有 console ,尤其是科学计算软件里。
    IgniteWhite
        3
    IgniteWhite  
       2016-09-20 10:48:24 +08:00
    @IgniteWhite 不好意思是 ttys000
    imn1
        4
    imn1  
       2016-09-20 11:22:53 +08:00
    Terminal 是软件概念(tty 是狭义的 Teminal)
    终端本身就是一个软件工具,可理解为它模拟命令行环境运行, tty 指文字输入输出,但终端不纯粹是文字输入输出,在 windows 类比(你说初学,估计接触 windows 多)就是 cmd
    称为 Console 的图形化模拟器可能容易理解些

    Shell 是原生概念
    它是指命令组成,而不是具体实现这些命令的工具 /环境, windows 类比就是“ DOS 命令”(注意是命令,不是 DOS ,可以运行 DOS 命令的工具其实很多,不仅 cmd )

    Console 是功能概念
    在软件层面就是一个控制器,例如 sublimetext, 浏览器的 js 解析器都有控制台输出,但在系统层面,如 linux ,它就是非图形界面的命令运行器, windows 所说的开机直接进入 dos 也是这个意思
    julyclyde
        5
    julyclyde  
       2016-09-20 11:36:23 +08:00
    terminal 是硬件概念。软件的叫 terminal emulator
    上述外设和电脑相连的时候,电脑这边的统一接口叫 tty ,后来虚化为 pty
    jmyz0455
        6
    jmyz0455  
    OP
       2016-09-20 16:52:24 +08:00
    @7sDream 没搜过知乎,第二个真详细。请问这个问题也可以解答一下吗 [NT 3.X 以后的 Windows 里, DOS 、 CMD 、 Batch 、 PowerShell 的关系是?]( https://www.v2ex.com/t/307585)
    jmyz0455
        7
    jmyz0455  
    OP
       2016-09-20 16:55:28 +08:00
    @IgniteWhite 好像一楼的答案更严谨一点,谢谢啦,请问这个问题也可以解答一下吗 https://www.v2ex.com/t/307585
    Cabana
        8
    Cabana  
       2016-09-20 19:22:55 +08:00 via Android
    linux 萌新也问一下, bash 是跟 shell 同阶的吗?还是说是 shell 的一个子集?
    hitmanx
        9
    hitmanx  
       2016-09-20 20:32:27 +08:00
    eoo
        10
    eoo  
       2016-09-20 23:05:49 +08:00 via Android
    @Cabana shell 有很多种, bash 只是 Linux 中默然使用的 shell
    franklinyu
        11
    franklinyu  
       2016-09-20 23:30:05 +08:00
    覺得 Bash = shell 的一定沒見過 /bin/sh ,/bin/ash ,/bin/csh ,/bin/tcsh ,/bin/zsh ……
    okudayukiko0
        12
    okudayukiko0  
       2016-09-21 00:24:37 +08:00
    TTY 约等于 Console
    Terminal=Console
    早期的 Unix 是没有显卡和显示屏的
    后来有了显卡和显示器,文本界面就称为终端( Terminal )
    Shell 吗, OS 的操作界面就是 Shell ,包括 GNOME , BASH ...不过大家所讲的 Shell 一般指命令行 BASH 。
    BASH 是 Linux 里最常见的命令行 Shell ,除此外还有 ZSH , TCSH 等。
    https://zh.wikipedia.org/wiki/%E7%B5%82%E7%AB%AF
    https://zh.wikipedia.org/wiki/Getty_(Unix)
    https://zh.wikipedia.org/wiki/%E6%AE%BC%E5%B1%A4
    https://zh.wikipedia.org/wiki/Bash
    KingsWay
        13
    KingsWay  
       2016-09-21 12:14:02 +08:00
    还有 pty 、 pts 。。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2685 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:28 · PVG 23:28 · LAX 08:28 · JFK 11:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.