shell编程入门之shell介绍

这段时间做集成开发,需要很多的shell脚本,特此开贴供自己后续参考和补充

每一次接触一门语言的时候,首先是想到语言的由来,使用场景,以及基本的语法和语义,最后怎么处理到我想要的东西呢。包括在学任何东西的时候都会有这样的疑惑,正是通过这样的思考,展开我们的文章。

本章节shell的起源,shell的分类,shell的运行方式,shell的角色

(1)shell起源

Bourne Shell     是1977年发布的Unix Version 7 中的默认Shell。目前大多数Unix系统仍保留着原始的 /bin/sh,或者保留一个软连接到其他Shell上 。该程序由 Stephen Bourne 在贝尔实验室工作期间开发,它的开发是做为 Thompson Shell 的一个替代。随着《The UNIX Programming Environment》(作者Brain W. Kernighan、Rob Pike)一书的出版,Bourne Shell开始变得流行起来。

C Shell (csh)在1970年代,由当时还是加州大学伯克利分校的学生Bill Joy编写。在1978年,随着BSD Unix系统的第二个版本广泛发布。早期贡献代码的成员还包括:Michael Ubell, Eric Allman, Mike O'Brien and Jim Kulp。在一些系统如Mac OS X和Red Hat Linux上,csh实际上是tchsh,一种增强型的shell。csh包含了当今shell的绝大多数特性,包括filename wildcarding, piping, here documents, command substitution, variables and control structures for condition-testing and iteration。虽然csh有着众多的交互特性以及快速的执行速度,但是最终未能流行起来。整个80年代,csh不能够确保出现在所有的Unix系统上,但是sh可以,这也是造成csh不够流行的主要因素。90年代中期,csh的分发开始广泛起来,这时又遭受了POSIX委员会的质疑,指出语法不够完善、特性缺失、扩展性差等问题[8]。

Korn Shell (ksh)由 David Korn 编写,1983年在USENIX上宣布。它向后兼容Bourne Shell,同时吸取了C Shell中的一些优点(job control)。代码贡献者还包括当时在Bell Labs的Mike Veach和Pat Sullivan。目前为开源软件:http://www.kornshell.org/。ksh的早期版本为 ksh88,是AIX4上的默认shell。后来又发布了ksh93版本。

Bash (the Bourne-Agian shell)由 Brian Fox 为GNU项目编写,目的是代替sh。首次发布于1989年,作为GNU项目的一个程序广泛分布在Linux、Mac OS X、Cygwin上。Brain Fox作为FSF的员工,首次开始工作是在1988年的1月10号,一年之后,发布了.99的测试版本。

(2)shell的分类

sh(Bourne shell):各种unix系统都配有sh

csh(c shell):随BSD UNIX发布,和c语言类似

ksh(korn shell):向后兼容sh的功能,并添加csh引入的新功能

tcsh(TENEN C shell):csh的增强版,在freeBSD和mac os x等系统中替代csh

bash(Bourne Again Shell):由GNU开发的shell,目标是与POSIX标准保持一致,同时兼容sh,是各种linux发行版本的标准配置。在linux系统上/bin/sh往往是指向/bin/bash的符号链接

从/etc/shells中可以获取shell类型

(3)shell的运行方式

shell是解释性语言,一种方式是交互式:用户输入一条命令,shell就解释一条命令

另一种方式是批处理:用户事先写一个shell脚本,让shell一次把这些命令执行完成

(4)shell的角色

充当用户与unix或linux交互的角色,类似linux的客户端

可以作为一种程序设计语言



发布了35 篇原创文章 · 获赞 7 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章