专注各种脚本编程
Baidu
加入收藏夹
本站内容有下面分类知识,欢迎您的到来^_^
shell相关:指令篇 基础篇 脚本欣赏 编程实例 shell问问 shell视频教程 技巧篇 水平测试 E文资料 vi编辑器 高级Bash脚本编程指南
其他:mysql perl c语言 oracle
当前位置:| 主页>shell问问>

一问:为何叫做shell

百度收藏 QQ搜藏

     在介绍 shell 是甚么东西之前,不妨让我们重新了解使用者与计算机系统的关系:
    我们知道计算机的运作不能离开硬件,但使用者却无法直接对硬件作驱动,硬件的驱动只能透过一个称为"操作系统(Operating System)"的软件来管理, 事实上,我们每天所谈的Unix/linux,严格来说只能是一个操作系统,我们称之为"核心(kernel)"。 然而,从使用者的角度来说,使用者也没办法直接操作kernel, 而是通过kernel的"外壳"程序,也就是所谓的shell,来与kernel沟通。这也正是 kernel 跟 shell 的形像命名关系。
    从技术角度来说,shell是一个使用者与系统的互动界面(interface), 主要是让使用者透过命令行(command line)来使用系统以完成工作。 因此,shell的最简单的定义就是---命令解译器(Command Interpreter):
   * 将使用者的命令翻译给核心处理;
   * 同时,将核心处理结果翻译给使用者。
    每次当我们完成系统登入(log in),我们就获得一个互动模式的shell,也称为login shell或者primary shell。 若从进程(process)角度来说,我们在shell所下达的命令,均是shell所产生的子进程。这现像,我们暂可称之为fork 。
     如果是执行脚本(shell script)的话,脚本中的命令则是由另外一个非互动模式的子shell(sub shell)来执行的。也就是primary shell产生sub shell的进程,sub shell再产生脚本(script)中所有命令的行程。(关于进程,我们日后有机会再补充。)
     这里,我们必须知道:kernel与shell是不同的两套软件,而且都是可以被替换的:
    * 不同的操作系统使用不同的kernel ,
    * 而在同一个kernel之上,也可使用不同的shell 。
    在 linux 的预设系统中,通常都可以找到好几种不同的shell,且通常会被列于如下文件里:/etc/shells
    不同的 shell 有着不同的功能,且也彼此各异、或说"大同小异"。
    常见的 shell 主要分为两大主流:
    sh:
    burne shell (sh)
    burne again shell (bash)
    csh:
    c shell (csh)
    tc shell (tcsh)
   korn shell (ksh)
   大部份的Linux系统的预设shell都是bash,其原因大致如下两点:
    * 自由软件
    * 功能强大
   Bash是gnu project最成功的产品之一,自推出以来深受广大 Unix 用户喜爱,且也逐渐成为不少组织的系统标准。

上一篇:没有了 下一篇:二问:shell prompt(PS1)与Carriage Return(CR)的关系

power by soyo123 2007-2008