Appearance
使用其他shell
什么是dash shell
它是ash shell的直系后代,而ash shell则是Unix系统上原来的Bourne shell的简化版本
ash shell最早的版本体积极小、速度奇快,但缺乏许多高级功能,比如命令行编辑或命令使用记录功能,这使它很难用作交互式shell
Debian Linux发行版创建了它自己的ash shell版本(称作Debian ash,或dash)以供自用。dash复制了ash shell的NetBSD版本的大多数功能,提供了一些高级命令行编辑能力\
Ubuntu Linux发行版将bash shell用作默认的交互shell,但将dash shell用作默认的/bin/sh shell。这个“特性”着实让shell脚本程序员一头雾水
在Unix世界中,默认shell一直是/bin/sh。在大多数Linux发行版上,/bin/sh文件是链接到shell程序/bin/bash的一个符号链接
Ubuntu Linux发行版将/bin/sh文件链接到了shell程序/bin/dash。由于dash shell只含有原来Bourne shell中的一部分命令,这可能会(而且经常会)让有些shell脚本无法正确工作
dash shell的特性
dash shell使用命令行参数来控制其行为。表23-1列出了命令行参数,并介绍了每个参数的用途
参数 | 描述 |
---|---|
-a | 导出分配给shell的所有变量 |
-c | 从特定命令字符串中读取命令 |
-e | 如果是非交互式shell的话,在有未经测试的命令失败时立即退出 |
-f | 显示路径名通配符 |
-n | 如果是非交互式shell的话,读取命令但不执行它们 |
-u | 在尝试展开一个未设置的变量时,将错误消息写出到STDERR |
-v | 在读取输入时将输入写出到STDERR |
-x | 在执行命令时将每个命令写出到STDERR |
-I(大写i) | 在交互式模式下,忽略输入中的EOF字符 |
-i | 强制shell运行在交互式模式下 |
-m | 启用作业控制(在交互式模式下默认开启) |
-s | 从STDIN读取命令(在没有指定文件参数时的默认行为) |
-E | 启用emacs命令行编辑器 |
-v | 启用vi命令行编辑器 |