下面这个问题来自于知乎的菜鸟误解:
最近想学学 Linux 下的 shell,基础知识都看完了,想做点东西,但是绞尽脑汁还是没想起来做点什么,最后我也查了一下 shell 的作用,到现在还没有一个很好的答案,都说 shell 可以直接与计算机交互,但是我想其他语言不也能方便的与计算机进行交互吗?shell 实现的功能,其他语言也能实现,可能会稍微复杂一些,难道 shell 就这点优势吗?望解惑!感激不尽。
下面是高赞答案:
从这个问题就能看出来,题主对shell的定位没有理解。题主不应该拿shell跟其他语言来对比,更不应该有这样的质疑:shell 实现的功能,其他语言也能实现,可能会稍微复杂一些,难道 shell 就这点优势吗?
关于shell的定位,应该从它的名字说起,操作系统分为内核(kernel)和外壳(shell)。也就是说shell的定位属于操作系统。题主拿操作系统的东西去跟编程语言去对比,明显不对等,门不当户不对啊。
操作系统的作用是什么呢?是管理计算机硬件与软件资源的计算机程序。那么shell的作用也是如此,即是管理计算机硬件与软件资源。
正如题主所说,“最近想学学 Linux 下的 shell,基础知识都看完了,想做点东西,但是绞尽脑汁还是没想起来做点什么”。因为我们平时很少会去管理计算机硬件和软件的,所以题主找不到shell的用武之地,这很正常。
shell是用来管理计算机硬件与软件资源的,所以shell就像一个胶水,能粘合其他的各种语言,实现软件资源的配合和协作。