您的位置:首页 > 运维架构 > Shell

SHELL的概念,SHELL是什么? 答部分读者的问题(第一次)

2014-03-17 11:20 495 查看
SHELL的概念,SHELL是什么? 答部分读者的问题(第一次)

2009-12-18 16:05:20

标签:SHELL

休闲
职场

近来几位读我的书 (《Oracle大型数据库系统在AIX UNIX上的实战详解》) 的读者来邮件咨询问题。各种问题没有想不到的,但有回答不了的,呵呵,大家见谅啊!





下面是一个比较集中的问题:shell是什么,和Oracle有什么关系?

我认为:关系大了。

什么是SHELL呢?下面是我平日资料累计中的一点内容,肯定来源于网上(无从考证了),共享于大家(感谢此文原作者的共享),正文开始如下:

====================================================

在介绍 shell 是甚幺东西之前,不妨让我们重新检视使用者与计算机系统的关系。

我们知道计算机的运作不能离开硬件,但使用者却无法直接对硬件作驱动,

硬件的驱动只能透过一个称为"操作系统(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 用户喜爱,

且也逐渐成为不少组织的系统标准。

===================================================================

上文讲述了什么是SHELL,SHELL是什么。那么Oracle运行在那一个层面呢?也是SHELL之上。Oracle并未直接访问UNIX Kernel,而是通过SHELL来支撑其运行环境。

没SHELL行吗?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: