when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.
问出这个问题是因为之前跟潘叔叔争执了一个问题,python 脚本执行的更快还是 shell 脚本执行的更快,潘叔叔觉得 python 更快,而我则觉得在 linux 系统上,shell 脚本直接调用的系统命令,会比 python 脚本更快,加上我提出 “你听过 shell 解释器吗?” 潘叔叔马上败下阵来,但是他也没直接服输,就说这已经超出自己的认知
问题就这样出现了,所以,shell 有解释器吗?
今天毕竟是大年三十,来完成这份记录确实也是比较程序员了
搜索了一些资料,发现原来不同时期的 shell 可能指的就不是一个事儿,加上一千个人眼里就有一千个哈姆雷特,对于 shell 的定义也是如此,有人觉得 shell 是相对 kernel 而言的(即 gui shell 和 command shell 都是 shell),有人认为现在的 shell 就是特指命令行
它是一个命令解释器,是当前的操作界面,为用户提供了一个向 Linux 内核发送请求以便运行程序的洁面系统级程序,用户可以用它来启动、挂起、停止、编写一些程序
当用它来编写程序时,它可以是一个功能强大的编程语言,易编写,易调试,灵活性较强,是解释执行的脚本语言,可以直接调用 Linux 系统命令
到这,shell 有解释器吗?有,每个脚本头部的 #!/bin/bash 就是它的解释器
从执行方式上扯,两者都有通过解释器解释成二进制执行,很难说明谁快谁慢,如果 shell 调用的是 c 编译的二进制是不是很可能就更快?
从存在即正义来看,shell 并没有代替掉 python,证明了 python 一定有它存在的意义,至少在量比较大的情况下做数据处理,我个人偏向 python,不为它快不快,只为它数据结构的便利
shell 把输入的命令通过查找 ASCII 表,解释成二进制,传递给内核,内核去找硬件执行,然后返回结果给内核,内核返回给 shell,shell 再查找 ASCII 表转换成看的懂的字符
用户在命令行输入命令后,一般情况下 shell 会 fork 并 exec 该命令,但是 shell 的内建命令例外,执行内建命令相当于调用 shell 进程中的一个函数,并不创建新的进程
be slow to promise and quick to perform.