為什麼有人會使用 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 之外已經有至少十年了。

相關內容