Shell 是用来解决什么问题的?

作者:Bryan Yuan
链接:https://www.zhihu.com/question/35382632/answer/65331452
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


shell 是用来解决用户如何与操作系统通信的问题。 shell 就是 壳,区别于 核。Linux 的 核 叫 kernel , 壳有很多种,有命令行的: bash 、sh 、csh 、ksh, 有图形化的: KDE、GNOME、CDE、 XFCE ,据说 Linus 那伙人只负责开发 核。Windows 9X 系列的 核 是 DOS,图形化的 壳 叫 Windows Explorer ,命令行 壳 叫 command。从 Windows XP 开始,Windows 的 核 叫做 Windows NT (Windows New Technology),图形化 壳 叫 Windows Explorer ,命令行 壳 有 command 、cmd.exe ,后面还推出了 Windows PowerShell。由于 Windows NT 技术是针对图形化壳设计出来的核,而 Windows 9X 就是在 DOS 上加了一个 壳。所以 Windows XP 蓝屏情况比 Windows 9X 少得多,但也有。另外我见过 Windows 7蓝屏,且到目前为止没有见过 Windows 8 和 Windows 10 蓝屏。可以把 shell 理解为 命令解释器。实际上不管是 命令行 shell 还是图形化 shell ,都是访问操作系统中的某个具有一定功能、可以处理具体事务的文件(二进制文件 ---- 此类文件经常被称作工具)、或包含一定内容的文件(文本文件),通常都是通过文件名访问(当然有例外,比如 Linux 的 alias 命令,比如 通过链接文件访问源文件),所以通常文件名就成了命令。在 Linux 的 /bin 目录和 /usr/bin 目录中有 Linux 命令对应的文件,在 Windows 的 %windir% 目录即 操作系统安装硬盘分区的 Windows 目录 和 %windir%\system32 目录中有 Windows 命令对应的文件, 此外还可以引入外部命令和自定义命令。而 shell 的作用就是解释某条命令对应的文件的文件路径,供用户使用并返回使用结果。这也就是为何有 shell 脚本一说。脚本语言是种解释型语言,不能编译成二进制代码,区别于编译型语言。就如 shell ,它的作用是将命令解释成对应的文件名,然后通过文件名调用文件。对于图形化 shell 是通过鼠标的点击来访问文件的,但实际也是通过文件名,因为每个文件都有包含文件名的完整路径。当有一天,机器控制了全人类,人类完全成了机器的奴隶,我想 shell 就可以被替代了,应该说是不存在了,因为机器自己会直接调用自己的某个功能。那时候,他们会做很多种如何与人类大脑通信的 shell,用来告诉人类某时某刻、用什么行为、完成什么事情、达到什么效果。当然,就机器控制人类这件事来说,最好的 shell 就是人类语言。咳咳,幽默完了就要严肃起来。反过来想,实际上,shell 就是人类告诉机器 某时某刻、用什么行为、完成什么事情、达到什么效果,只不过操作系统是以文件做为基本元素构成的。所以,shell 就是要找到所需文件,也就是要用什么行为。而 某时某刻 、完成什么事情可以理解为参数,达到的效果就看用户对各种命令的熟悉程度了,因为多个命令(多个具有一定功能的文件)可以灵活的组合使用,如 Linux 管道符就能实现多个命令组合使用。很多时候,很多人,包括我,在学习时都懒得看理论部分,认为计算机科学是门应用科学,只要掌握技能就行,理论那些逐渐就懂了。可事实不是这样的,长期对某件事物知其然不知其所以然会让人变得对某件事物没有追求,最后在 困惑—忽略困惑—麻木 这一过程中变得平庸。所以,困惑的时候,何不看看书?
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值