Linux 中的 Dash Shell 是什么?Linux 中的 Dash Shell 是什么?Linux 中的 Dash Shell 是什么?Linux 中的 Dash Shell 是什么?
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

Linux 中的 Dash Shell 是什么?

发表 admin at 2025年2月28日
类别
  • 未分类
标签

没有多少人知道 Debian Linux 发行版中常见的 dash shell。这是一个快速介绍。

当你想到 shell 家族时,Dash 是最不为人所知的名字之一。但 Dash 并不是要取代你当前的 shell,而是在底层工作的。

您肯定有很多与 Dash 相关的问题,例如它的用例是什么、它与常规 shell 有何不同等等。让我们深入了解达世币。

什么是达世币外壳?

Dash 代表 Debian Almquist Shell。它是 Bourne Shell 的 POSIX 兼容实现。它取代了默认脚本中的/bin/sh,并提供更好的执行速度,同时消耗更少的资源。

如果您使用基于 Debian 的发行版,则默认情况下您已经在使用 Dash。你可能会说,Bash 是我的默认 shell。你对默认 shell 的看法是正确的,所以让我解释一下这个矛盾的说法。

在 Ubuntu 6.10 发布之前,当默认脚本想要执行 /bin/sh 作为符号链接来激发 bash 时,会使用 Bash。

随着 bash 随着时间的推移变得越来越大,效率受到影响,Dash 被实现来取代默认脚本中的 /bin/sh。

Dash(Debian Almquist Shell)比 bash 更简单,也更精简。 Dash 并不适合交互式会话,而是在幕后工作以提高效率。

现在,我们来看看达世币的优势:

  • 与 bash 相比,您可以获得显着的性能改进

  • 与其他 shell 相比,它使用的磁盘空间更少,这对于在存在潜在问题时用于清理的包装器脚本非常重要。

  • Dash 仅依赖于 libc(核心系统库),而 bash 需要有终端支持库,没有它们,你甚至无法运行脚本。这意味着,达世币可以在损坏的系统上更好地工作!

Dash 和 Bash 的性能比较

正如我上面提到的,破折号意味着高效,但确切的数字是多少,或者它快了多少倍,只能从测试中得出。

因此,我将对 bash 和 dash 进行比较,以便您可以更好地了解其性能。

测试启动时间

我将使用一个简单的 shell 脚本,该脚本将跟踪打开 shell 1000 次的确切时间,而无需执行任何操作。

那么让我们从 bash 开始吧。

#!/bin/bash
for i in $(seq 1 1000);
do bash -c ":" ;
done

为了跟踪时间,我使用了时间实用程序。它给了我结果如下:

使用的脚本将调用bash来运行一个没有任何操作的shell 1000次,大约需要3秒。

现在,让我们对破折号做同样的事情。通过对上述相同脚本进行一些更改,就可以准备进行破折号测试了。

#!/bin/dash
for i in $(seq 1 1000);
do dash -c ":" ;
done

当我执行上面的脚本时,它给出了以下结果:

使用 dash 执行相同的脚本时,只花费了 1.1 秒,这还不到 bash 所用时间的一半。

使用 ShellBench 脚本测试性能

ShellBench 是 POSIX shell 的基准测试实用程序,可提供各种测试,通过这些测试您可以根据不同的参数测试 shell。

ShellBench 在无限循环中运行给定的命令集 1-2 秒,然后返回每秒执行的次数。

由于我只在 dash 和 bash 之间进行测试,因此我的命令如下:

./shellbench -s bash,dash sample/*

正如您可以清楚地看到的,dash 在性能方面要优越得多。

最后的话

Dash 在性能方面优于 bash,但不能使用,因为它不是为交互而设计的。 Ubuntu 仍然使用 bash 作为登录 shell,并严重依赖它,因为 dash 仍然缺乏完全替换 bash 所需的一些功能。

©2015-2025 Norria support@norria.com