2019年7月20日 星期六

什么是shell

从技术层面回答什么shell: shell是一个程序,充当用户界面和脚本解释器,允许用户输入命令以及间接的访问内核的服务。
下面我们从不太技术的角度给shell一个更详细,包含两部分的描述:
首先,shell是一个命令处理器:一个读取并解释所输入命令的程序。每键入一条Unix命令,shell就读取该命令,并指出应该怎样做。大多数shell还提供了一些工具,是日常工作更加便利。例如,shell允许重新调用,编辑,以及重新输入前面的命令。

其次,shell还支持一些类型的编程语言。使用该语言可以编写由shell解释的程序,这些程序称为shell脚本。这些脚本可以包含常规的Unix命令,以及特殊的shell编程命令。每种类型的shell都拥有自己特定的编程语言和规则。但是,位于同一家族之内的shell通常使用相似的编程语言。
但是,究竟什么是shell的本质,以上的解释并没有真正捕捉到。要知道,shell是使用Unix的主要界面。因为shell有许多种,所以可以选择使用那种类型的界面,但是所选择的shell将影响您对Unix的感受。
各种shell之间的区别尽管重要,即便专家之间,意见也大相径庭。但是对于初学者来说并没有什么意义:初学者最好使用系统上默认的shell。一旦您有了经验,就可以选择一个自己最喜欢的shell,然后使用它为自己创造一个共度定制的环境。
此时,一旦了如何自如地操纵自己的工作环境,您将开始理解人们对shell的神秘感。
提示:
精通正在使用的shell远比花大量时间试图选择一个“正确”的shell,或者试图劝说忙碌的系统管理员在您的系统上安装一个新shell更为重要。
“如果不能使用自己喜欢的shell,那么就喜欢正在使用的shell。”——Harley Hahn
名称含义:
shell
对于“shell”这一名称有3种理解方式。第一种,Unix的shell提供了一种定义明确的界面,用来保护操作系统的内部。从这种意义上讲,shell的作用就像是牡蛎的壳,保护其脆弱的部分免受伤害。
第二种,可以将shell想象成海里的一种贝壳,其外壳一圈圈地向上旋转形成一个螺旋。在使用Unix的shell时,随时可以暂停正在做的工作,启动另一个shell或者另一个程序。因此,可以启动任意数量的程序,并且每个程序都位于它的前辈的“内部”,就像贝壳的螺旋一样。
但是,我的建议是要忍住不让自己问这个问题,即名称“shell”的含义是什么。相反,要将单词“shell”看成一个群新的技术术语(就像RTFM或foo一样),并且让自己随着使用Unix的经验日益增加而逐渐领会它的含义。

沒有留言:

張貼留言