简单理解Shell


Shell是一种应用程序,这种应用程序提供了一个界面,用户通过这个界面访问操作系统内核服务,通俗来讲,Shell是用户和Linux内核之间的接口程序。

你在命令提示符下输入的每个命令都由shell先解释然后传给Linux内核,因为Shell是一个命令语言解释器,拥有自己内建的 Shell 命令集,所以你输入的命令会先在内部的Shell命令集里寻找去解释,然后再将结果传给Linux内核。此外,shell也能被系统中其他有效的Linux实用程序和应用程序所调用。

此外不管你输入什么命令,它都能被Linux shell所解释。像一些命令,比如打印当前工作目录命令(pwd),是包含在Linux bash内部的(就像DOS的内部命令,前面我们上一篇文章就有说明Linux 的目录概念:点这里)。

至于其他命令,比如拷贝命令(cp)和移动命令(rm),是存在于文件系统中某个目录下的单独的程序。而对用户来说,可能会不太清楚一个命令是建立在Shell内部命令集还是一个单独的程序。
bin.png
Shell 首先检查命令是否是内部命令,不是的话再检查是否是一个应用程序,这里的应用程序可以是Linux本身的实用程序,比如ls 和 rm,也可以是购买的商业程序,比如 xv或者是公用软件如 ghostview。

然后Shell试着在搜索路径($PATH)里寻找这些应用程序。搜索路径是一个能找到可执行程序的目录列表。如果你输入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。而如果命令被成功的找到的话,shell的内部命令或应用程序将被分解为系统调用并传给Linux内核。 shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell 程序设计语言支持在高级语言里所能见到的绝大多数程序控制结构,比如循环,函数,变量和数组。shell 编程语言很易学,并且一旦掌握后它将成为你的得力工具。任何在提示符下能键入的命令也能放到一个可执行的shell程序里,这意味着用shell语言能简单地重复执行某一任务。

这里可能有些绕口,根据我请教总结就是:
操作系统处于shell和硬件之间,其作用就是根据优先级去调度系统内核(以及包含shell)和硬件,被分解是因为shell的另一个重要特性是因为它自身就是一个解释型的程序设计语言,所以可以自我解释编译,然后被操作系统根据优先级去进行调度,将数据分层次进行

声明:苏茗鹿的空间|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接


Carpe Diem and Do what I like