Linux:什么是Dash(/bin/dash)Shell?
时间:2020-01-09 10:38:00 来源:igfitidea点击:
什么是/bin/dash?
我注意到默认的系统shell程序/bin/sh已更改为/bin/dash。
为什么要进行此更改?
Dash是Debian Almquist shell(Dash)的首字母缩写。
它是一个Unix和Linuxshell,比bash小得多,但仍以POSIX兼容为目标。
dash是/bin/sh的POSIX兼容实现,目的是尽可能地小。
dash是ash的NetBSD版本ash(Almquist SHell)的直接后代,该版本于1997年初移植到Linux。
它在2002年重命名为dash。
dash是Linux系统的标准命令解释器。
当前的dash正在更改过程中,以符合POSIX 1003.2和1003.2ashell规范。
该版本具有许多功能,在某些方面使其看起来与Korn Shell相似,但它不是Korn Shell克隆。
此shell程序仅包含POSIX指定的功能以及一些Berkeley扩展。
从DebianSqueeze和Ubuntu 6.10开始,默认shell为Dash。
由于以下技术原因,默认系统shell程序/bin/sh已更改为/bin/dash:
- 为了加快系统启动时间。原因是Dash的启动速度比bash的启动速度快,并且在启动过程中启动了很多次shell。测量表明它们运行速度相当快,因此启动时间的缩短必须归因于Dash在初始化过程中减少了工作量。
- 它需要较少的磁盘空间,但功能也较少。
- 这取决于
更少的库
。 - 在升级问题或磁盘故障的情况下,它被认为"更可靠"。
关于Bash特定脚本的说明
建议为避免自己的特定于Bash的脚本出错,可以使用shebang行,如下所示:
#!/usr/bin/env bash.
或者
#!/path/to/real/bash.binary
或者
#!/usr/local/bin/bash
Ubuntu 建议:
Shell脚本的开发人员遵守POSIX标准,省略了标记为XSI扩展的项目。
这样做将改善对各种Unix系统的可移植性,并确保您遇到的问题将被视为错误而不是未记录的功能。
测试所有脚本,并使用虚拟化或测试计算机查看一旦/bin/sh默认为/bin/dash,它们是否会中断。