Linux教程(19)-TurboLinux Shell

2008-02-23 05:30:13来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。

 什么是shell

Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。他是命令语言、命令解释程式及程式设计语言的统称。

shell是用户和Linux内核之间的接口程式,假如把Linux内核想象成一个球体的中央,shell就是围绕内核的外层。当从shell或其他程式向Linux传递命令时,内核会做出相应的反应。

shell是个命令语言解释器,他拥有自己内建的shell命令集,shell也能被系统中其他应用程式所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。

有一些命令,比如改变工作目录命令cd,是包含在shell内部的。更有一些命令,例如拷贝命令cp和移动命令rm,是存在于文档系统中某个目录下的单独的程式。对用户而言,不必关心一个命令是建立在shell内部还是个单独的程式。

shell首先检查命令是否是内部命令,若不是再检查是否是个应用程式(这里的应用程式能够是Linux本身的实用程式,如ls和rm,也能够是购买的商业程式,如xv,或是免费软件,如emacs)。然后shell在搜索路径里寻找这些应用程式(搜索路径就是个能找到可执行程式的目录列表)。假如键入的命令不是个内部命令并且在路径里没有找到这个可执行文档,将会显示一条错误信息。假如能够成功找到命令,该内部命令或应用程式将被分解为系统调用并传给Linux内核。图10-1展示了shell是如何执行命令的。

用户命令 

外部命令 

UNIX核心 

图10-1 shell的工作原理

shell的另一个重要特性是他自身就是个解释型的程式设计语言,shell程式设计语言支持绝大多数在高级语言中能见到的程式元素,如函数、变量、数组和程式控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程式中。

当普通用户成功登录,系统将执行一个称为shell的程式。正是shell进程提供了命令行提示符。作为默认值(TurboLinux系统默认的shell是BASH),对普通用户用“$”作提示符,对终极用户(root)用“#”作提示符。

一旦出现了shell提示符,就能够键入命令名称及命令所需要的参数。shell将执行这些命令。假如一条命令花费了很长的时间来运行,或在屏幕上产生了大量的输出,能够从键盘上按ctrl c发出中断信号来中断他(在正常结束之前,中止他的执行)。

当用户准备结束登录对话进程时,能够键入logout命令、exit命令或文档结束符(EOF)(按ctrl d实现),结束登录。

我们来实习一下shell是如何工作的。

$ make work

make:***No rule to make target ‘work’. Stop.

$

注释:make是系统中一个命令的名字,后面跟着命令参数。在接收到这个命令后,shell便执行他。本例中,由于输入的命令参数不正确,系统返回信息后停止该命令的执行。

在例子中,shell会寻找名为make的程式,并以work为参数执行他。make是个经常被用来编译大程式的程式,他以参数作为目标来进行编译。在“make work”中,make编译的目标是work。因为make很难找到以work为名字的目标,他便给出错误信息表示运行失败,用户又回到系统提示符下。

另外,用户键入有关命令行后,假如shell很难找到以其中的命令名为名字的程式,就会给出错误信息。例如,假如用户键入:

$ myprog

bash:myprog:command not found

$

能够看到,用户得到了一个没有找到该命令的错误信息。用户敲错命令后,系统一般会给出这样的错误信息。

shell的种类

Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh)。三种shell各有优缺点。Bourne shell是UNIX最初使用的shell,并且在每种UNIX上都能够使用。Bourne shell在shell编程方面相当优秀,但在处理和用户的交互方面做得不如其他几种shell。Linux操作系统缺省的shell是Bourne Again shell,他是Bourne shell的扩展,简称Bash,和Bourne shell完全向后兼容,并且在Bourne shell的基础上增加、增强了很多特性。Bash放在/bin/bash中,他有许多特色,能够提供如命令补全、命令编辑和命令历史表等功能,他还包含了很多C shell和Korn shell中的长处,有灵活和强大的编程接口,同时又有很友好的用户界面。

C shell是一种比Bourne shell更适于编程的shell,他的语法和C语言很相似。 Linux为喜欢使用C shell的人提供了Tcsh。Tcsh是C shell的一个扩展版本。Tcsh包括命令行编辑、可编程单词补全、拼写校正、历史命令替换、作业控制和类似C语言的语法,他不但和Bash shell是提示符兼容,而且还提供比Bash shell更多的提示符参数。

Korn shell集合了C shell和Bourne shell的长处并且和Bourne shell完全兼容。Linux系统提供了pdksh(ksh的扩展),他支持任务控制,能够在命令行上挂起、后台执行、唤醒或终止程式。

Linux并没有冷落其他shell用户,还包括了一些流行的shell如ash、zsh等。每个shell都有他的用途,有些shell是有专利的,有些能从Internet网上或其他来源获得。要决定使用哪个shell,只需读一下各种shell的联机帮助,并试用一下。

用户在登录到Linux时由/etc/passwd文档来决定要使用哪个shell。例如:

# fgrep lisa /etc/passwd

lisa:x:500:500:TurboLinux User:/home/lisa:/bin/bash

shell被列每行的末尾(/bin/bash)。

由于Bash是Linux上缺省的shell,本章主要介绍Bash及其相关知识。




标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Linux教程(20)-shell命令

下一篇: Linux教程(18)-在线帮助

热门词条
热门标签