您的当前位置:首页正文

常用Unix Shell环境比较

来源:九壹网
维普资讯 http://www.cqvip.com

第34卷,增刊 气象科技 Vo1.34,Suppl 2006年9月 METEOROLOGI(’AL SCIENCE AND TECHNOLOGY Sep.2006 常用Unix Shell环境比较 李娟 (国家气象信息中心,北京100081) 摘要Shell是各类Unix操作系统与外部最主要的接口,是用户与操作系统之间交互的工具,不同Unix操作系统 下缺省使用的Shell各不相同,用户在使用不同计算机时因为Shell的不同产生了许多困扰。文章简述了几种主要 的Shell及其历史,介绍了如何选择Shell,比较了常用Unix Shell的异同及不同Shell登录时的初始化过程,最后详 细介绍了AIX(Advanced Interactive eXecutive)系统中Kom Shell的启动、初始化文件和一个控制用户登陆的Shell 应用实例。 关键词B0ume Shell C SheU Kom Shell 引言 令解释器,类似于DOS下的command.com。它解 释用户输入的命令并且把它们送到系统的内核去执 目前国家气象信息中心的各主要业务和科研用 行。换句话说Shell就是用户与操作系统对话的一 计算机的操作系统都是Unix和Linux以及其他类 个接口,用户发出一个命令,通过Shell告诉系统让 似Unix的操作系统。Shell( ̄["壳程序)是各类Unix 系统执行用户的命令。 操作系统与外部最主要的接口,是操作系统最外面 Shell提供了用户与操作系统之间通信的方式。 的一层。用于管理用户与操作系统之间的交互:等 这种通信可以交互方式(从键盘输入,并且可以立即 待用户输入,向操作系统解释用户的输入,并且处理 得到响应),或者以Shell script(非交互)方式执行。 各种各样的操作系统的输出结果。但各厂家的U— 交互式模式就是Shell等待你的输入,并且执行你提 nix操作系统下缺省使用的Shell各不相同,其中 交的命令。这种模式被称作交互式是因为Shell与 AIX(Advanced Interactive eXecutive)操作系统下是 用户进行交互。这种模式也是大多数用户非常熟悉 Kom Shell,Solaris和FreeBSD缺省的是Bourne 的:登录、执行一些命令、签退。当用户签退后,Shell Shell,HP—UX缺省的是POSIX Shell,Linux缺省的 就终止了。Shell也可以运行在另外一种模式:非交 是Bourne Again Shell。 互式模式。在这种模式下,Shell不用你进行交互, 1 Shell简介 而是读取存放在文件中的命令,并且执行它们。当 它读到文件的结尾,Shell也就终止了。Shell script Shell外壳是一种特殊程序,它被用作用户和一 是放在文件中的一串Shell和操作系统命令,它们可 个称为内核(kerne1)的Unix操作系统核心之间的 以被重复使用。本质上,Shell script是把命令行命 界面。内核在系统引导时装入内存并一直管理系统 令简单地组合到一个文件里。 直到关机为止。它创建并管理进程,并且管理内存、 文件系统、通信等。所有其他程序,包括Shell程序, 2几种主要的Shell及其历史 都放在外部磁盘上,内核把这些程序装入内存执行, 首个重要的标准Unix Shell是1970年底在V7 并在它们终止时清理系统。Shell基本上是一个命 Unix(AT&T第7版)中引入的,并且以它的创始 科技部基础条件平台“国家气象网络计算应用节点建设”项目(2004DKA50730)资助 作者简介:李娟,女,1971年生,高级工程师,主要从事高性能计算机管理工作,Email:lijuan ̄cma.gov.cn 收稿日期:2006年3月23日;定稿日期:2006年6月20日 维普资讯 http://www.cqvip.com

增刊 李娟:常用Unix Shell环境比较 45 者Stephen Bourne的名字命名。Bourne Shell作为 编程语言是基于Algol语言的,而且主要用于系统 管理任务自动化。虽然它由于简单而迅速流行,但 缺乏交互式使用的许多特性,如历史、别名和作业控 制。 点。Zsh与Kom Shell最相像。 3选择Shell 在登录进入Unix后,操作系统使用户处于自 己的起始目录(home directory)下运行Shell,当前最 常用的Shell有sh、esh和ksh。用户很多时候不需 要知道或担心使用的是哪种Shell,可以通过观察 20世纪70年代末,在加利福尼亚大学Berkeley 研制的C Shell是作为BSD Unix的一部分发布的。 这种主要由Bill Joy所写的Shell提供了许多标准 oBurne Shell里不提供的附加特征。C Shell是基于 C编程语言的,而且当用做编程语言时,它使用类似 C语言的语法。它也提供交互使用的增强功能,如 命令行历史、别名和作业控制。因为这种Shell是在 大型机上设计的,而且加入了大量附加的特征,所以 跟Bourne Shell相比,C Shell在小型机上有运行缓 慢的趋势,甚至在大型机上也运行缓慢。 由于Bourne Shell和C Shell都可使用,所以现 在Unix用户有了选择余地,同时也在选择Shell的 问题上产生了困扰。来自AT&T的David Korn于 20世纪80年代中期开发了Korn Shell,发布于1996 年,并且在1998年正式成为Unix的SVR4分支的 组成部分。其实Bourne Shell的超集Korn Shell,不 仅能在Unix系统上运行,而且能在OS/2、VMS和 DOS上运行。它提供与Bourne Shell的向上兼容 性,增加了许多C Shell的受欢迎的特征,而且快捷 有效。AIX使用的是最为广泛使用的1998年版本 的Korn Shell。 除了以上提到的3种“标准”Unix Shell外,还 有许多其他的Shell也在使用-1 J,如: ・Bourne Again Shell(bash)是GNU计划的一部 分,用来替代Bourne Shell。它用于基于GNU的系 统(如Linux)。大多数Linux(Red Hat、Slaekware、 Caldera)都以bash作为缺省的Shell,并且运行sh 时,其实调用的是bash。 ・POSIX Shell是Korn Shell的一个变种。当前 提供POSIX Shell的最大卖主是Hewlett—Packard公 司。在HP—UX 11.0版本中,POSIX Shell就是/ bin/sh,而bsh是/usr/old/bin/sh。 ・TC Shell(tesh)是C Shell的扩充版本,并完全 兼容C Shell,是那些更喜欢C语法的用户可以选择 的bash的替代品。 ・Z Shell(zsh)组合了Bourne Again Shell、TC Shell和Korn Shell的许多特点,并吸收了一些新特 Shell提示符来辨别当前使用的是那种。下面是缺 省的提示符,也可以很容易的修改它们: ・Bourne Shell使用美元符(¥); ・C Shell使用百分号(%); ・Korn Shell使用美元符(¥)。 当今使用的Unix Shell都是源于Bourne Shell 或C Shell或是二者的结合,而这两种Shell又受到 已过时的第6版Shell很深的影响。这样,所有的 Shell在许多方面很相似,他们的标准特征、语法和 符号几乎都一样。当然,不同的方面也很多。例如, oBurne Shell和C Shell都包含一个程序设计语言的 许多特征,但他们的特征是完全不兼容的。另一个 不兼容的方面是C Shell有交互式命令人口特征,例 如工作控制、替换人口和保留历史命令等机制,而在 oBurne Shell中都没有-2 J。 许多经验丰富的Unix用户建议在交互式使用 时用C Shell,而写Shell脚本时用Bourne Shell。这 就意味着要学习两种不同的命令集。如果可能的 话,Korn Shell也许是Bourne/C Shell最好的替代 者。Korn Shell完全与Bourne Shell兼容,但它又包 含一些其他组成部分使它的交互能力比C Shell还 要优越,另外Korn Shell的效率很高。其他的Shell 如bash、tesh和zsh等也在不同操作系统上使用。 4定制用户环境 依据用户登录时使用缺省Shell,可以通过编辑 几个配置文件来定制该用户的环境。Unix被定制 成在登陆对话时执行特定的系统环境脚本。读出什 么和执行什么的最基本依据是用户登录时所选择的 Shell工作环境。下面分别介绍常用的Bourne Shell、C Shell和Korn Shell中如何定制用户环境。 4.1 Bourne Shell 如果Bourne Shell是用户注册时的缺省Shell, 则在用户看到一个Shell提示符之前,先处理一系列 的进程。在用户正确输入用户名和口令后,安装一 维普资讯 http://www.cqvip.com

气 象 个初始环境,并启动注册Shell(/bin/sh,在“/etc/ passwd”文件里的最后一项)。sh进程查找系统文 件“/etc/profile”并执行它的命令,然后它在用户的 起始目录下查找“.profile”初始化文件,执行“.pro— file'’的命令后,提示符(¥)出现在屏幕上。用户 Shell的配置在Shell的初始化文件里定义。 初始化文件:在Bourne Shell启动之后,它首先 查找系统文件“/etc/profile”,执行文件里的命令后, 再执行在用户的起始目录下的初始化文件“.pro— file”。 “/etc/profile”文件:是一个系统范围内的初始 化文件,它由系统管理员建立,在用户注册时用来执 行任务。 “.profile”文件:是一个注册时执行一次的用户 自定义初始化文件。它用于定制并修改Shell环境。 环境和终端设置一般都放在这里。 搜索路径:Bourne Shell用path变量来定位在 命令行输人的命令。当搜索命令时,该路径是一个 由Shell使用的冒号分隔的目录列表,搜索从左到右 进行,路径末尾的点代表当前路径。 4.2 C She11 C Shell在用户起始目录下查找“.cshrc”文件, 此初始化文件允许用户定制将要在其中工作的C Shell环境。执行“.cshrc”文件里的命令后,再执行 “.1ogin”文件里的命令。每次启动一个新的C Shell 都将执行“.cshrc”文件,“.1ogin”文件只在用户注册 时执行一次。执行了这些文件里的命令后,提示符 (%)出现在屏幕上。 初始化文件:在csh程序启动之后,执行在用户 起始目录中的两个文件:“.cshrc”文件和“.1ogin”文 件。这些文件允许用户初始化自己的环境。 “.cshrc”文件:包含(:Shell变量设置且每次启 动一个子Shell时都被执行。别名和历史记录一般 都在这里设置。 “.1ogin”文件:只在用户第一次注册时被执行一 次。它通常包含环境变量和终端设置,是启动窗口应 用程序的文件。因为环境变量都被该Shell产生的进 程所继承而且只需被设置一次,而且不必给每个进程 重置终端设置,所以这些设置属于“.1ogin”文件。 “.1ogout”文件:也是初始化文件,只不过它是在 用户注销时执行,用户可以设置“.1ogout”文件以使 其完成任何在注销时想要完成的操作,文件中没有 科 技 第34卷 定义变量,常包括关闭进程的Shell命令,可以向“. 1ogout”文件中添加自己的Shell命令。 搜索路径:与4.1节中同,建议在“.1ogin”文件 里设置路径。 4.3 Korn Shell ksh程序在注册后首先寻找系统文件“/etc/ profile”,并执行它的命令。然后在用户的起始目录 下寻找初始化文件“.profile”和环境文件“.kshrc”。 在执行了这些文件中的命令后,提示符(¥)出现在 屏幕上。 其初始化文件“/etc/profile”文件及“.profile”文 件与4.1节中相同。 FNV文件:该文件在每次启动一个交互式ksh 或ksh脚本程序(命令表)时都会执行。该文件中包 含专用ksh变量和别名。 搜索路径:与4.1节同。建议在“.profile”文件 中设置路径。为了加速搜索处理,Korn Shell已经 实现跟踪别名。 5在IBM高性能计算机上的应用实例 目前国家气象信息中心的主要业务用高性能计 算机都是IBM AIX操作系统,AIX操作系统缺省使 用的都是Korn Shellt 3_。下面详细介绍AIX系统中 的Korn Shell启动、初始化文件及应用实例。 用户登录AIX操作系统时,Shell先读取设置的 初始化文件,然后定义用户环境。用户环境的各项 特征由给定的环境变量值来定义,并保持该环境直 到注销系统(图1)。 初始shel1执行 用户工作环境 图1 AIx系统用户工作环境建立的过程 在登录操作系统时,Shell使用两种类型的启动配 置文件。首先它对配置文件中的命令求值,然后执行 命令以设置系统环境。这些文件都具有相似的功能, “/etc/profile文件对系统上所有用户都生效,而“.pro. file”文件只对定制该用户自己的环境生效。” Shell首先运行“/etc/profile”文件,执行相应的 维普资讯 http://www.cqvip.com

增刊 李娟:常用Unix Shell环境比较 47 命令并对相应的变量进行赋值,然后根据“/etc/en. “if[¥LOGNAME!=“root”] vironment”文件来设置系统环境。运行这两个文件 then 后,系统将查看在该登录用户的主目录中是否存在 /bin passwd “.profile文件”。如果“.profile”文件存在,则系统运 if[¥?==0] 行该文件,对用户环境进行进一步配置。另外, then “.profile”文件还将指定是否执行环境文件,如果环 echo“sucessfully!It will take up to 1 hours for 境文件存在(通常为“.env”),则系统运行此文件,并 the new password to propagate to all nodes” 设置环境变量。在“.env”中设置的环境变量可以覆 fi 盖在“/etc/environment”文件中的环境变量。 exit “/etc/environment、/etc/profile”和“.profile”文 fi’’ 件在登录时运行一次。另外,“¥H0ME/.env”文件 这样用户通过登录节点修改过的passwd命令登录 在每次打开新Shell或窗口时运行。AIX系统中还 NFS服务器只能修改口令,完成后即退出此节点, 支持其他的Shell,通过chfs命令用户可以更改登录 回到登录节点。 时缺省使用的Shell类型。 在IBM高性能计算机中,为了方便用户使用, 6 结语 在/etc/profile文件中定义了许多环境变量,如 目前,大型服务器和计算机均采用Unix和 w0RKDIR、TMPDIR等,这样就不需要每个用户都 Linux操作系统,Shell的使用也越来越普遍。选择 在自己的“.profile”文件中进行设置,同时也方便系 自己熟悉的Shell,灵活运用Shell相应的初始化文 统管理员对系统软件和目录的管理。另外,在IBM 件,对用户的环境设置、系统管理和应用带来许多方 高性能计算机中,用户只能在NFS服务器上去修改 便。 口令,有些用户经常忘了如何做,为了减轻用户的负 担,在用户登录的几个节点修改/bin/passwd命令 参考文献 为:“echo It will take up to 1 hours for the new pass— [1]QuigleyE.Unix SheH实例详解[M].张茹译.北京:中国电力 word to propagate to all nodes.rsh nfsservlgSVC”出版社,2002. 。 —[2]Peter Kuo.最新UNIX开发使用手册[M].前导工作室译.北 这样用户一执行passwd命令就直接登录NFS 京:机械工业出版社,1999. 服务器nfservlgSVC节点,而在nfservlg—SVC节 —C3]于宁斌.AIX 5L系统管理技术[M].北京:电子工业出版社, 点上根据用户环境的建立过程,修改“/etc/profile” 2003. 文件。加入: Comparison of Common Unix Shells Li Juan (National Meteorological Information Center,Beijing 100081) Abstract:The default shell is different in different Unix operating systems.The difference of the shells may puzzle users who use different types of computers.The main shells and their histories are introduced.The way to select a shell,the difference,the similarities and the login initialization process of the Unix Shells in common use are introduced.The starting and the initialization files of AIX(Advanced Interactive eXecutive)are de— scribed particulraly.An example of controlling user’S logins is given. Key words:Bourne Shell,C Shell,Korn Shell 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top