Ich muss vorhandene Shell-Skripte ändern und sie beginnen mit
#!/bin/sh
Aus welchem Grund sollte jemand das auf einem System verwenden, das auch Bash unterstützt? Ich bin versucht, es zu ändern, möchte aber sicherstellen, dass es dafür keinen Grund gibt, den ich nicht kenne.
Mein aktuelles Problem betrifft eine Zeichenfolgenmanipulation. Die Verwendung ${mystring:start:length}
wäre in Bash sehr einfach, in SH jedoch nutzlos.
Antwort1
Es ist heutzutage vielleicht nicht offensichtlich, da moderne Linux-Distributionen die gängigsten Betriebssysteme sind, aber vor einiger Zeit konnte man nicht nur verschiedene Systeme finden, die überhaupt nicht über Bash verfügten, sondern, soweit ich mich erinnere, sogar eine Linux-Distribution, die in einer ihrer Versionen /bin/bash hatte, das mit einer Shell verknüpft war, die nicht Bourne-ähnlich war.
Das Verschieben von #!/bin/bash-Skripten von einem System auf ein anderes war damals lästig, daher war es klüger, die Skripte in einer reinen Bourne-Shell ohne Bashismen zu erstellen.
Portabilität war also wohl der Hauptgrund. Ich verwende immer noch #!/bin/sh, wenn ich sicher bin, dass das Skript keine Bashismen enthält, obwohl es mindestens zehn Jahre her ist, dass ich nichts anderes als Linux um mich herum hatte.