我一直认为使用 dash 而不是 bash 的唯一好处是 dash 更小,因此许多 dash 实例在启动时启动得更快。
但是我做了一些研究,发现有些人将他们所有的脚本迁移到 dash 中,希望他们能跑得更快,我也在Ubuntu Wiki 的DashAsBinSh文章中发现了这一点:
切换默认 shell 的主要原因是效率。bash 是一个优秀的全功能 shell,适合交互式使用;事实上,它仍然是默认的登录 shell。但是,与dash相比,它的启动和操作相当大且缓慢。
现在,我一直在系统上使用大量 bash 脚本来处理许多事情,我的问题是我有一个特定的脚本,我 24/7 连续运行,产生大约 200 个孩子,它们一起加热我的计算机 10° C多于正常使用。
这是一个相当大的脚本,有很多 bashism,因此将它们移植到 POSIX 或其他一些 shell 将非常耗时(而且 POSIX 对个人使用并不重要),但如果我能减少其中的一些,那将是值得的CPU使用率。我知道还有其他事情需要考虑,比如调用一个外部二进制文件,比如sed一个简单的 bashism ${foo/bar},或者grep代替=~.
TL;DR与 dash 相比,bash 的启动和运行速度真的更慢吗?是否有其他 Unix shell比 bash更有效?
我想在 shell 脚本中比较两个浮点数。以下代码不起作用:
#!/bin/bash
min=12.45
val=10.35
if (( $val < $min )) ; then
min=$val
fi
echo $min
Run Code Online (Sandbox Code Playgroud)