zoukankan      html  css  js  c++  java
  • Shell十三问更新总结版 -- 什么叫做 Shell?-- Shell十三问<第一问>

    Shell十三问更新总结版

    简介

    ChinaUnix 论坛 Shell 版名为網中人的前辈于 2004 年发布的精华贴,最近回炉这块内容,觉得很多东西讲的实在透彻,非常感谢前辈網中人,同时我个人也对这个系列做了一些总结和备注,写于下面章节,虽然这篇文件写于2004年,但是Shell这个东西变化很少,这个系列希望能够帮助到大家提供给大家,有心学习的同学不要读一遍练习一遍就算完了,第一遍和第二遍和第十遍读这个系列,感受绝对不一样,疏漏处请见谅。
    網中人原贴:http://bbs.chinaunix.net/thread-218853-1-1.html

    什么叫做 Shell?-- Shell十三问<第一问>

    在介绍 shell 是什么东西之前,不妨让我们重新检视使用者与计算机系统的关系:我们知道计算机的运作不能离开硬件,但使用者却无法直接对硬件作驱动,硬件的驱动只能透过一个称为"操作系统(Operating System)"的软件来控管。

    事实上,我们每天所谈的 linux ,严格来说只是一个操作系统,我们称之为"核心(kernel)"。然而,从使用者的角度来说,使用者也没办法直接操作 kernel ,而是透过 kernel 的"外壳"程序,也就是所谓的 shell ,来与kernel 沟通。这也正是 kernel 跟 shell 的形像命名关系。

    从技术角度来说,shell 是一个使用者与系统的互动界面(interface),主要是让使用者透过命令行(command line)来使用系统以完成工作。

    因此,shell 的最简单的定义就是---命令解译器(Command Interpreter)

    • 将使用者的命令翻译给核心处理,
    • 同时,将核心处理结果翻译给使用者。

    每次当我们完成系统登入(login),我们就取得一个互动模式的 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 (GNU项目)最成功的产品之一,自推出以来深受广大 Unix/linux 用户喜爱,且也逐渐成为不少组织的系统标准。

  • 相关阅读:
    Js特殊字符转义之htmlEscape()方法
    利用Image对象,建立Javascript前台错误日志记录
    html5 实现 文件夹上传
    博客园博客开通了
    js 无刷新文件上传 (兼容IE9 )
    js实现关键词高亮显示 正则匹配
    Python练习六
    Python练习二
    Python练习三
    Python练习四
  • 原文地址:https://www.cnblogs.com/passzhang/p/12200802.html
Copyright © 2011-2022 走看看