当我从Linux转换开始使用macOS的时候,我发现macOS的终端很丑,它长这样:
终端
很久很久以前,终端这个概念是这样的:
是一种硬件,是一种输入输出设备,用于和计算机交换信息。
shell
终端的工作其实是很少的哦,简单来说3点:GUI软件界面、接收输入、显示输出。
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脚本语言差异。
ls
、pwd
等等这些常用命令所有shell都一样支持。所以我们普通用户更关注是细节、外观、功能上的差距。这一点zsh做的格外的优秀。
我们在讨论配置终端的时候,实际上是在讨论配置shell。
为什么zsh如此受欢迎?
这个较新的shell与bash兼容,但包括更多的功能。 zsh shell提供内置的拼写校正,改进的命令行完成,充当shell插件的可加载模块,允许您在命令行上别名文件名或其他任何东西的全局别名,而不仅仅是命令,以及更多主题支持。 它像bash,但有很多附加功能,附加功能和可配置选项,你可能会喜欢,如果你在命令行上花费大量的时间。3
不同shell的切换
cat /etc/shells
,可以查看本机上的所有shell:临时切换
bash
,即可切换到bash环境下,输入exit
,复原默认shell环境。默认切换5
#使用系统自带的 zsh:输入密码成功切换,重启终端即可使用 zsh。
chsh -s /bin/zsh
#使用第三方的 zsh,如从 brew 安装的 zsh。
sudo chsh -s /usr/local/bin/zsh
8 条评论
还有一点疑惑,unbuntu中打开的终端窗口,必然是终端模拟器对吧,那终端模拟器中的命令提示符又是shell的概念,也就是说,打开的这个终端窗口,既有终端的概念,又有shell的概念,是这样吗?
发现文章中的图片挂了,已经补上了。
终端现在来说就是一个软件,比如 Mac 上的 terminal.app,这个软件中运行着不同的 shell,如 zsh 或者普通的bash。不同 shell 之间在 shell 语法上、外观以及命令提示功能上有区别。这些 shell 都是最终都是用来与内核进行交互的
微博图床崩了,群主有没有什么方案
打算写一个脚本将博客所有新浪图片的内容下载到本地服务器并替换地址,不过以后只能用自己服务器或者别的图床了(╯‵□′)╯︵┴─┴
大佬请问你博客的音乐插件是哪一个
主题自带的。你也可以使用aplayer
开始捣鼓zsh。。。(-_-||| 邮箱地址不合法,@前面有
.
)zsh书写起来,代码高亮,容易辨别