0%

Linux的几种可选shell

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模块了。

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道