为什么有人会使用 sh 而不是 bash?

为什么有人会使用 sh 而不是 bash?

我必须修改现有的 shell 脚本,它们以

#!/bin/sh

为什么有人会在也支持 bash 的系统上使用它?我很想改变它,但我想确保没有一个我不知道的原因。

我当前的问题是字符串操作,${mystring:start:length}在 bash 中使用起来很容易,但在 sh 中却没有用。

答案1

如今,现代 Linux 发行版是最常见的操作系统,这一点可能并不明显,但不久前,您不仅会发现各种系统根本没有 bash,而且我记得甚至有一个 Linux 发行版,其版本之一/bin/bash 链接到一些不类似 Bourne 的 shell。

当时将 #!/bin/bash 脚本从一个系统移动到另一个系统很烦人,因此在没有 bashism 的纯 bourne shell 中编写脚本更为明智。

所以我想便携性是主要原因。如果我确信脚本中不会有任何攻击的话,我仍然会使用 #!/bin/sh,尽管我周围除了 linux 之外已经有至少十年了。

相关内容