Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)
==============================================================================================
环境:
系统版本:(lsb_release -a)
Description: Ubuntu 10.04.4 LTS
内核版本 ( cat /proc/version)
Linux version 2.6.32-41-generic (buildd@crested)
(gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1) )
#88-Ubuntu SMP Thu Mar 29 13:10:32 UTC 2012
bash 版本( bash --version)
GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)
编译器:vim version 7.2.330
===============================================================================================
最近开始系统的学习bash 是因为之前一直用C,而而bash给我的感觉和其他脚本语言一样直观, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。
一、shell的分类
shell有ash、bash、ksh、csh、zsh等。
1.ash
ash shell是由Kenneth Almquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,因而使用起来很不方便。
2.bash
bash是Linux系统默认使用的shell,它由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。Linux使用它作为默认的shell是因为它有诸如以下的特色:
可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。
自动通过查找匹配的方式给出以某字符串开头的命令。
包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。
3.ksh
ksh是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。
4.csh
csh是Linux比较大的内核,它由以William Joy为代表的共计47位作者编成,共有52个内部命令。该shell其实是指向/bin/tcsh这样的一个shell,也就是说,csh其实就是tcsh。
5.zch
zch是Linux最大的shell之一,由Paul Falstad完成,共有84个内部命令。如果只是一般的用途,是没有必要安装这样的shell的。
二、与编译型语言的差别
前面说到像C语言一样,但是shell和C还是有些区别的。中型、大型的程序都是用编译型语言写成,例如C、。这类程序只要从源代码(source code)转换成目标代码(object code),便能直接通过计算机来执行)。
编译型语言的好处是高效,缺点则是:它们多半运作于底层,所处理的是字节、整数、浮点数或是其他机器层级的对象。例如,在C++里,就很难进行“将一个目录里所有的文件复制到另一个目录中”之类的简单操作。
脚本编程语言通常是解释型(interpreted)的。这类程序的执行,是由解释器(interpreter)读入程序代码,并将其转换成内部的形式,再执行。请注意,解释器本身是一般的编译型程序。
之后要开始进入shell语言的语法了,笔记中以bash标准来进行学习。
========================================================================================
参考资料
Linux与unix shell编程指南.pdf
================================================================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++随+++堂 +++测+++试++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1. 有很多种 shell, 你熟悉几种? 各个 shell 的 home page 在哪里?
A1:好像一直都是在用bash ,在哪呢??你不会 echo $SHELL 呀,你不会查看 /etc/shells,home page 都是E文吧
大赠送
root@ubuntu_64:~# cat /etc/shells
# /etc/shells: valid login shells
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen
得在考虑一下环境
SHELL Solaris 9 HP-UX 11i AIX 5.3 SCO 7.14 LINUX (RedHat)
----- --------- --------- ------- -------- --------------
BSH /usr/bin/sh N/A /usr/bin/bsh /usr/bin/sh /bin/ash (bsh -> ash)
CSH /usr/bin/csh /usr/bin/csh /usr/bin/csh /usr/bin/csh /bin/csh -> tcsh
TCSH /usr/bin/tcsh N/A N/A N/A /bin/tcsh
KSH88 /usr/bin/ksh /usr/bin/ksh /usr/bin/ksh /usr/bin/ksh88 N/A
KSH93 /usr/dt/bin/dtksh dtksh /usr/bin/ksh93 /usr/bin/ksh N/A
BASH /usr/bin/bash N/A N/A N/A /bin/bash
PDKSH N/A N/A N/A N/A /bin/ksh
POSIXSH /usr/xpg4/bin/sh /bin/sh /usr/bin/psh /u95/bin/sh /bin/sh (-> bash)
ZSH /usr/bin/zsh N/A N/A N/A /bin/zsh
2. 为什么说 zsh 是目前为止功能最为强大的 shell.
A2: 为什么呢,因为人家大呀,因为大所以强大咯。84个内部命令呢。能不强大。(ash-20、bash-40、ksh-42、csh-50、zsh-84)
3. 为什么说 pdksh 功能较弱?
PD-ksh [the Public Domain Korn Shell],什么叫较弱??compatible with both POSIX and AT&T ksh,还弱??看看资料去
4. ksh88 与 ksh93 有何区别?
ksh 是 UNIX/Linux 下流行的 shell 语言,ksh93 是 ksh 的增强型版本;相比于 ksh,ksh93 提供了更接近于高级语言的特性,包括 c 风格的 for 循环,关联数组,名字引用,复合变量和更方便的字符串操作。