前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >终端与shell的区别

终端与shell的区别

作者头像
田小檬
发布2022-08-30 16:13:18
7420
发布2022-08-30 16:13:18
举报
文章被收录于专栏:田小檬博客

本文最后更新于2022年01月11日,已超过153天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

首先明白,什么是终端,什么是zsh

终端

很久很久以前,终端这个概念是这样的:

是一种硬件,是一种输入输出设备,用于和计算机交换信息。 终端的工作:用户通过终端输入命令,终端将命令传入计算机,执行后,并把结果输入到终端上显示。

从这个概念不难可以看到电传打印机符合这个概念:

举个例子,下面这些软件都是终端:

{callout color="#f0ad4e"} GNU/Linux:gnome-terminal、Konsole; macOS:Terminal.app、iTerm2; Windows:Win32 控制台、ConEmu 等。 {/callout}

shell

我之前很迷惑一个问题是,有终端就够了嘛,输入命令,执行并把结果输出,要shell干什么。更让人抓狂的shell还有很多种类,bash,cshell,zsh。 这些到底是做什么的 ?

所以需要明确下 终端负责的工作

终端的工作范围 :接收用户的输入,显示传过来的输出。( 此外还提供一些优化用户体验的功能 ,比如支持文字复制粘贴、软件背景颜色的调整等)

终端的工作其实是很少的哦,简单来说3点:GUI软件界面、接收输入、显示输出。

而shell的核心工作就是操控 计算机内核(如新建文件等等) ,即 访问操作系统中的某个具有一定功能、可以处理具体事务的文件(二进制文件 ---- 此类文件经常被称作工具) 、或包含一定内容的文件(文本文件)2

shell分为:

  • 图形化 shell( 图形化的桌面环境 ),如Windows Explorer (文件管理器)、 Linux的桌面环境有:KDE、GNOME、CDE、 XFCE等。
  • 命令行 shell。如bash 、sh 、csh 、ksh

我们一般讨论shell都是指命令行shell。

shell为什么叫做命令解释器

不管是GUI shell 还是命令行 Shell,其实都是在解释命令,只不过GUI shell隐藏解释命令细节,用户通过点击鼠标的操作操作内核命令。

shell为什么叫做壳

如上图,shell通过解析命令调用 系统调用和相关API操作内核命令,进而读写硬件完成任务。shell是最外的一层的接收用户操作,像一层壳一样裹在整个调用过程中。

为什么有这么多命令行shell

shell与shell脚本语言并不完全相同的概念。shell除了包括对命令的语法规范(shell语言)和对命令解析,还包括一些额外的功能(如命令补全、主题等等)。

shell语言和我们学习的任何其他高级语言c,python,java没有太大区别。不同的shell语言可以看做java语言的不同版本。

不同shell的区别主要是两方面:

  • 脚本语言语法有差异
  • 功能、外观、自定义美化上有差异

脚本语言

早期的sh甚至不支持给长命令设置别名的语法。

zsh虽然完全兼容bash的语法,但还有一些语法差异

自定义功能配置 除非我们需要编写shell脚本,普通用户一般很难发现不同shell脚本语言差异。

对文件操作ls、pwd等等这些常用命令所有shell都一样支持。

所以我们普通用户更关注是细节、外观、功能上的差距。这一点zsh做的格外的优秀。

比如色彩高亮、命令提示、智能补全、快速跳转等等附加功能。

我们在讨论配置终端的时候,实际上是在讨论配置shell。

为什么zsh如此受欢迎?

这个较新的shell与bash兼容,但包括更多的功能。 zsh shell提供内置的拼写校正,改进的命令行完成,充当shell插件的可加载模块,允许您在命令行上别名文件名或其他任何东西的全局别名,而不仅仅是命令,以及更多主题支持。 它像bash,但有很多附加功能,附加功能和可配置选项,你可能会喜欢,如果你在命令行上花费大量的时间。

总结: 终端就是软件,是最外层的,shell = shell脚本语言解析器+编辑、外观等额外功能

参考资料

命令行界面 (CLI)、终端 (Terminal)、Shell、TTY,傻傻分不清楚?

Shell 是用来解决什么问题的? - Bryan Yuan的回答 - 知乎

Bash,Zsh和其他Linux Shell之间有什么区别?

为什么说 zsh 是 shell 中的极品? - 韦易笑的回答 - 知乎

终端中的 zsh 和 bash

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 终端
  • shell
  • shell为什么叫做命令解释器
  • shell为什么叫做壳
  • 为什么有这么多命令行shell
    • 脚本语言
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档