首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

2.3  什么是shell

文本框:  
图  2-1

在开始讨论如何使用shell进行程序设计之前,我们先来回顾一下shell的作用以及Linux系统中提供的各种shell。

shell是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令。这点与Windows的命令提示符类似,但正如先前所提到的,Linux shell的功能更强大。例如,我们可以使用<和>对输入输出进行重定向,使用|在同时执行的程序之间实现数据的管道传递,使用$(...)获取子进程的输出。在Linux中安装多个shell是完全可行的,用户可以挑选一种自己喜欢的shell来使用。在图2-1中,我们显示了shell(实际上是两种shell:bash和csh)和其他程序环绕在Linux内核的四周。

由于Linux是高度模块化的系统,所以你可以从各种不同的shell中选择一种来使用,虽然它们中的大多数都是从最初的Bourne shell演变而来的。在Linux系统中,总是作为/bin/sh安装的标准shell是GNU工具集中的bash(GNU Bourne-Again Shell)。 因为它作为一个优秀的shell,总是安装在Linux系统上,而且它是开源的并且可以被移植到几乎所有的类UNIX系统上,所以我们把它作为将要使用的shell。在本章中,我们将使用bash的第2版并且使用那些与POSIX兼容的shell中常见的功能。同时,我们假设你的登录系统所使用的默认shell是作为/bin/sh安装的shell。在大多数Linux发行版中,默认的shell程序/bin/sh实际上是对程序/bin/bash的一个连接。

可以使用如下命令来查看bash的版本号:

想要更改到另一个shell——例如,bash不是你的系统中默认的shell,只需直接执行需要的shell程序(例如,/bin/bash)就可以运行新的shell并且改变命令提示符。如果你的UNIX系统上没有安装bash,则可以从GNU Web网站http://www.gnu.org上免费下载。它的源代码具有高度的可移植性,同时它也提供了一个好机会,可以在你自己的UNIX版本上毫无约束地进行编译。

创建一个Linux用户时,你可以设置这个用户要使用的shell。图2-2显示了在Red Hat用户管理程序中提供的默认选项。

图  2-2

还有许多免费的或商业的shell可以使用,表2-1对常用的shell做了一个简单的总结。

表  2-1

shell名称

相关历史

sh(Bourne)

源于UNIX早期版本的最初的shell

csh,tcsh,zsh

C shell及其变体,最初是由Bill Joy在Berkeley UNIX上编写的。它可能是继bash和Korn shell之后第三个最流行的shell

ksh,pdksh

korn shell和它的公共域兄弟pdksh(public domain korn shell)由David Korn编写,它是许多商业版本UNIX的默认shell

bash

来自GNU项目的bash或Bourne Again Shell是Linux的主要shell。它的优点是可以免费获取其源代码,即使你的UNIX系统目前没有运行它,它也很可能已经被移植到该系统中。bash与Korn shell有许多相似之处

除了C shell和少数变体以外,所有这些shell都很相似,并且都与X/Open 4.2和POSIX 1003.2 规范中对于shell的规定非常一致。POSIX 1003.2规范中对于shell的规定很少,但在X/Open中的扩展规定则提供了一个更加友好、功能更加强大的shell。通常X/Open规范是一个提出更多要求的规范,进而由它产生的系统也更加友好。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论