何为 shell?

作者: 64346b251688 | 来源:发表于2019-07-03 17:59 被阅读0次

shell是什么东西之前,不妨让我们重新审视使用者和计算机系统的关系:

我们知道计算机的运作不能离开硬件,但使用者却无法直接操作硬件, 硬件的驱动只能通过一种称为“操作系统(OS,Opertating System)”的软件来管控。 事实上,我们每天所谈的“linux”,严格来说只是一个操作系统(OS), 我们称之为“内核(kernel)”。

然而,从使用者的角度来说,使用者没有办法直接操作一个kernel, 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。 这也正是kernel跟shell的形象命名的的关系。如图:

从技术的角度来说,shell是一个使用者与系统的交互界面(interface), 只能让使用者通过命令行(command line)来使用系统来完成工作。 因此,shell最简单的定义就是----命令解释器( Command Interpreter):
将使用者的命令翻译给 kernel 来处理;
同时,将 kernel 的处理结果翻译给使用者。

每次当我们完成系统登入(login), 我们就取得一个交互模式的 shell, 也称之为login shell 或者 primary shell。

若从进程(process)的角度来说,我们在shell所下达的命令,均是 shell 所产生的子进程。 这种现象,我暂可称之为fork。

如果是执行shell脚本(shell script)的话,脚本中命令则是由另一个非交互模式的 子shell(sub shell)来执行的。 也就是 primary shell 产生 sub shell 的进程,而该 sub shell 进程再产生 script 中所有命令的进程。 (关于进程,我们日后有机会在补充)

这里, 我们必须知道:kernel 与 shell 是不同的两套软件,而且都是可以被替换的:
不同的OS使用不同的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) (FIXME)

大部分的 Linux 操作系统的预设 shell 都是bash,其原因大致如下两种:

自由软件
功能强大

bash 是 gnu project 最成功的产品之一,自推出以来深受广大Unix用户的喜爱, 且也逐渐成为不少组织的系统标准。

相关文章

  • 何为 shell?

    shell是什么东西之前,不妨让我们重新审视使用者和计算机系统的关系: 我们知道计算机的运作不能离开硬件,但使用者...

  • Mac终端增强技能

    1、Shell介绍 1.1、何为shell 关于shell,一个广义的解释就是在用户与操作系统之间,提供一个工具或...

  • 鸟哥私房菜Shell基础(1/3)

    何为shell 应用程序操作操作系统的顺序是 应用程序发出指令 核心管理Kernel(主要控制各个硬件工作) 硬件...

  • Shell 学习

    shell 变量 shell 参数传递 shell 数组 shell 运算符 shell echo 命令 prin...

  • Shell 概述

    学习 Shell 主要包括的内容: Shell 脚本入门 Shell 变量 Shell 内置命令 Shell 运算...

  • Shell 教程

    Shell 变量 Shell 传递参数 Shell 数组 Shell 基本运算符 Shell echo 命令 Sh...

  • shell 第一天

    shell编程初识 1.1 shell编程初识 shell的定义 Shell 是命令解释器 Shell 也是...

  • shell 案例

    Shell编程一 Shell防范ARP攻击 Shell编程二 Shell防范DDos攻击 Shell编程三 ...

  • 【生物信息笔记】shell 脚本 (dry-2)

    shell 和 shell script(脚本)区别: shell 和 shell 脚本是两个不同概念,shell...

  • Linux Shell:基础知识和Shell变量

    摘要:Linux,Shell 整理Shell内容要点: Shell基础知识 Shell变量的类型 Shell变量赋...

网友评论

    本文标题:何为 shell?

    本文链接:https://www.haomeiwen.com/subject/rjrchctx.html