Shell
ash shell
Ash shell是一种低预算的shell,体型较小,提供基本特性。尤其适合低内存
应用,例如嵌入式Linux系统。
Dash shell是Debian Linux发型的ash shell,及Debian ash shell的缩写。
对于Ubuntu这里需要注意,Ubuntu Linux使用bash shell作为默认的交互式shell,但是使用dash shell作为默认的/bin/sh shell。这个特性很容易让shell编程人员感到混乱,甚至是有时脚本无法运行。
我们一般编写脚本的时候通常使用#!/bin/sh
,但是由上面可以知道ubuntu会把这个指向dash,所以还是写成#!/bin/bash
吧,这样比较保险。
tcsh shell
Linux世界中另一种流行的shell是C shell,C shell是将C编程语言中的特性合并到shell脚本中,最流行的开源C shell是tcsh shell。
C shell的目的是提供一个适合C编程人员的命令行和脚本编写环境。
20世纪70年代后期Ken Greer对C shell进行扩展,添加了TENEX操作系统的命令行编程特性,这就是tcsh的由来。
tcsh shell环境变量可能有点混淆、Bourne shell及其派生的bash、ash和dash都只是使用一种环境变量来存储系统信息。而tcsh shell包含两种环境变量:
- shell变量;
- 系统环境变量; 系统环境变量由大写字母组成,提供标准系统信息。Tcsh shell变量是小写变量,对shell具有特殊含义。
对于shell变量,可以使用set命令设置shell变量值。或者@也可以。
Korn shell
Korn shell在Unix世界中很流行,但是在Linux世界中并不同样流行。Korn shell提供了Bourne shell和c shell世界的混合特性。
原始Korn shell是David Korn于20世纪80年代在AT&T贝尔实验室工作期间开发的。
Korn shell分两种不同的路线:
- Ksh88
- Ksh93
大多数实现使用的是ksh93 shell。
Ksh93 shell的一个很棒的特性是可以轻松的使用数学运算。
执行数学运算的方法有两种;
- let命令;
- 双圆括号;
对于许多编程人员来说,ksh93 shell的卖点就是它对浮点数的完全支持。
zsh shell
Zsh shell提供一些神奇的特性,并将shell未来发展的门槛提高到相当高的高度。
Zsh是Paul Falstad开发的开源Unix Shell。它是集合了Bourne、bash、ash和tcsh等shell的特性,这句话很NB呀,并加入了许多特有的特性,以编程人员使用为目的而创建的一种成熟的高级shell。
其中一些特性使得zsh独具特色:
- 改良的shell选项控制;
- Shell兼容性的模式;
- 可载入模块。
在这些特色中,可载入模块在shell设计中思想最先进。
zsh shell提供一个核心内置命令集,还提供添加附加命令模块(command modules)的功能。
Zsh是目前自定义功能最强的shell。
可以使用zmodload命令添加ash的模块,如果不加任何参数,可以显示zsh中的模块。
要删除一个模块可以使用-u参数,例如zmodload –u zsh/net/tcp就可以删除tcp模块了。