在Linux系统上,通常有好几种shell可用,比较常见的有bash、dash和zsh shell。不同shell各有千秋:有些更易于创建脚本,有些更易于管理进程。

bash shell是几乎所有Linux发行版的默认shell。作为标准Unix shell——Bourne shell(沿用创建者的名字)的替代,bash shell由GNU工程开发。bash shell的名称就是针对这个Bourne shell的文字游戏,全称为“Bourne again shell”。 bash有很灵活和强大的编程接口,同时又有很友好的用户界面。功能包括命令补齐、通配符、命令历史记录、别名等。

dash shell是作为Debian Linux发行版的一部分开发的,主要出现在Ubuntu Linux发行版中。它是Bourne shell的精简版,支持的功能不像bash shell支持的那样多,这可能会给脚本编程带来一些问题。

dash shell的历史很有趣。它是ash shell的直系后代,而ash shell是Unix系统上原来的Bourne shell的简化版本。令人不解的是,实际上dash shell在许多基于Debian的Linux发行版中并不是默认的shell。由于bash shell在Linux中的流行,大多数基于Debian的Linux发行版将bash shell用作普通登录shell,只将dash shell用作安装脚本的快速启动shell来安装发行版文件。而流行的Ubuntu发行版是一个例外。Ubuntu Linux发行版将bash shell用作默认的交互shell,但将dash shell用作默认的/bin/sh shell。这通常会让shell脚本程序员很困惑,并给在Linux环境中运行shell脚本带来了很多问题。

zsh(Z shell)是另一个流行的shell,是由Paul Falstad开发的开源Unix shell。它集成了所有现有shell的思想并增加了许多独到的功能,为程序员创建了一个全功能的高级shell。zsh shell具有三大功能:改进的shell选项处理、shell兼容性模式以及可加载模块。其中,可加载模块是shell设计中最先进的功能。