Chinaunix首页 | 论坛 | 博客
  • 博客访问: 337338
  • 博文数量: 1051
  • 博客积分: 53280
  • 博客等级: 大将
  • 技术积分: 6670
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 13:21
文章分类

全部博文(1051)

文章存档

2011年(1)

2008年(1050)

我的朋友

分类:

2008-09-09 15:47:05



  写在前面:我一直有一个想法,要把我工作几年来的经验总结一下,但总是没有动力来完成它。现在,我给自己施加了一些压力,希望我能坚持下去,完成我的专栏。如果我的文章对大家能够有所帮助,我会感到非常的高兴。
  下面的专栏,是我参照几本英文资料,并融入我个人的经验写成的。因为我本人水平有限,如有不确切的地方请大家批评指正。因为我有自己的工作,只能在工作间歇来完成写作,不一定每天都能推出新东西,请大家谅解。也欢迎其他高手也推出自己的专栏,把我们的论坛办成国内一流的技术论坛。
  如要转载,请与我联系。
  什么是shell?
  操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
  shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。
  交互式shell和非交互式shell
  交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
  shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。
  shell的类型
  在UNIX中主要有两大类shell
  Bourne shell (包括 sh, ksh, and bash)
  Bourne shell ( sh)
  Korn shell ( ksh)
  Bourne Again shell ( bash)
  POSIX shell ( sh)
  C shell (包括 csh and tcsh)
  C shell ( csh)
  TENEX/TOPS C shell ( tcsh)
  
  Bourne Shell
  最初的UNIX shell是由Stephen R. Bourne于20世纪70年代中期在新泽西的AT&T贝尔实验室编写的,这就是Bourne shell。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne shell 可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和$HOME/.profile文件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。
  C Shell
  Bill Joy于20世纪80年代早期,在Berkeley的加利福尼亚大学开发了C shell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。
  Korn Shell
  有很长一段时间,只有两类shell供人们选择,Bourne shell用来编程,C shell用来交互。为了改变这种状况,AT&T的bell实验室David Korn开发了Korn shell。ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,Korn shell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。Korn Shell 是一个交互式的命令解释器和命令编程语言.它符合POSIX——一个操作系统的国际标准.POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。
  Bourne Again Shell (bash)
  bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat, Slackware, Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。
  POSIX Shell
  POSIX shell 是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0 , POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh.
  各主要操作系统下缺省的shell:
  AIX 下是Korn Shell.
  Solaris和FreeBSD缺省的是Bourne shell.
  HP-UX缺省的是POSIX shell.
  Linux是Bourne Again shell.
  【TIP】
  #!/usr/bin/sh的用途
  shell script的第一行一般都是#!/usr/bin/sh或#!/usr/bin/ksh等,它的用途就是指出本脚本是用的哪种shell写的,执行时系统应该用哪种shell来解释执行它。
  
  
  


  


 相关文章  热门文章











--------------------next---------------------

阅读(109) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~