dash用来运行脚本在速度上要比bash快,而其他不兼容POSIX的shell,比如fish在交互上要比bash更友好,更面向交互。在”更好的交互”这个方向上也有其他不弱于fish的shell可选,但是就单论脚本执行速度,那dash是无与伦比的快。
所以为什么不使用dash来替换bash呢?这里的替换指的是不下载bash,直接下载dash。
可以这样吗?
dash用来运行脚本在速度上要比bash快,而其他不兼容POSIX的shell,比如fish在交互上要比bash更友好,更面向交互。在”更好的交互”这个方向上也有其他不弱于fish的shell可选,但是就单论脚本执行速度,那dash是无与伦比的快。
所以为什么不使用dash来替换bash呢?这里的替换指的是不下载bash,直接下载dash。
可以这样吗?
何苦呢……Arch Linux很多脚本也是依赖bash而不是POSIX sh的,换不了。
另外我并不觉得dash快。尤其是bash/zsh脚本可以用更省事的非POSIX特性的时候。
别换。
linux默认用bash基本上已经成了惯例,擅自替换会造成不可知后果,正如ArchWiki所言:
大多数 POSIX 兼容的脚本在脚本的第一行指定
/bin/sh,这意味着它将运行/bin/sh作为 shell,在 Arch 中默认情况下,/bin/sh是指向/bin/bash的符号链接。您可以将
/bin/sh重新符号链接到/bin/dash,这可以提高系统性能,但首先您必须验证所有非显式声明#!/bin/bash的脚本都不需要任何 Bash 的特性,并且所有/bin/sh脚本都安全地符合 POSIX 标准。
鉴于潜在的挂着sh实际用bash特性的脚本的存在,完全避免使用bash几乎是不可能的,相比之下换用dash能带来多少可感知的性能提升呢?我不认为这是一笔划算的买卖。