Linux/Python学习论坛-京峰教育

 找回密码
 立即注册

一键登录:

搜索
热搜: 活动 交友 discuz
查看: 1738|回复: 0

为何叫做shell(shell十三问)

[复制链接]

63

主题

161

帖子

2628

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2628
发表于 2015-3-18 14:25:21 | 显示全部楼层 |阅读模式
1) 为何叫做 shell ?

在介绍 shell 是甚幺东西之前,不妨让我们重新检视使用者与计算机系统的关系:
图(FIXME)
我们知道计算机的运作不能离开硬件,但使用者却无法直接对硬件作驱动,
硬件的驱动只能透过一个称为"操作系统(Operating System)"的软件来控管,
事实上,我们每天所谈的 linux ,严格来说只是一个操作系统,我们称之为"核心(kernel)"。
然而,从使用者的角度来说,使用者也没办法直接操作 kernel ,
而是透过 kernel 的"外壳"程序,也就是所谓的 shell ,来与 kernel 沟通。
这也正是 kernel 跟 shell 的形像命名关系。如图:
图(FIXME)
从技术角度来说,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)
(FIXME)
大部份的 Linux 系统的预设 shell 都是 bash ,其原因大致如下两点:
* 自由软件
* 功能强大
bash 是 gnu project 最成功的产品之一,自推出以来深受广大 Unix 用户喜爱,
且也逐渐成为不少组织的系统标准。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|京峰教育,只为有梦想的人 ( 京ICP备15013173号 )

GMT+8, 2021-1-18 19:25 , Processed in 0.020399 second(s), 12 queries , Apc On.

快速回复 返回顶部 返回列表