Ich habe hier einige alte scripte die kommen mit
#!/bin/bash
oder
#!/bin/sh
in der ersten Zeile.
Sollte ich das mal alles auf #!/bin/bash ändern oder mich für was anderes entscheiden oder ist das völlig egal?
bash, sh, zsh oder was bei Debian?
-
- Beiträge: 332
- Registriert: 07.06.2007 20:01:12
Re: bash, sh, zsh oder was bei Debian?
Syntaktisch unterscheiden sich die verschiedenen Shells schon in den Details. /bin/sh ist unter Debian für gewöhnlich ein Link auf /bin/dash.
Wenn du also bash-Scripts hast solltest du sie auch explizit damit aufrufen falls du "komische Effekte" vermeiden willst.
Wenn du also bash-Scripts hast solltest du sie auch explizit damit aufrufen falls du "komische Effekte" vermeiden willst.
Re: bash, sh, zsh oder was bei Debian?
Es wird schon seinen Grund haben, warum jeweils die Shell oder die Bash verwendet wird. Die Shell (wie schon erwähnt, zumeist die Dash) ist schlanker und schneller, hat aber einige Funktionen nicht. Normalerweise braucht man die Bash-Erweiterungen nicht, aber das kommt halt auf das Skript an.
Ich sehe keinen Mehrwert darin, alles auf die Bash umzustellen. Wenn du selbst skriptest, nimm' einfach die sh, und wenn irgendwas nicht geht, guckst du in die Manpage dazu und stellst bei fehlender Funktion die Shebang auf bash um oder änderst deinen Code.
Gruß Cae
Ich sehe keinen Mehrwert darin, alles auf die Bash umzustellen. Wenn du selbst skriptest, nimm' einfach die sh, und wenn irgendwas nicht geht, guckst du in die Manpage dazu und stellst bei fehlender Funktion die Shebang auf bash um oder änderst deinen Code.
Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
-
- Beiträge: 332
- Registriert: 07.06.2007 20:01:12
Re: bash, sh, zsh oder was bei Debian?
Das sind alles von mir selbst geschriebene Scripte. Nichts grosses. Eigentlich sehr simpel. Dateioperationen oder viel sed. Angefangen habe ich damals mit einer Kopie von einem Fremdscript und da wurde die sh genutzt. Später habe ich dann bash genommen oder auch die sh. Von daher müßte es eigentlich egal sein.
Re: bash, sh, zsh oder was bei Debian?
Nein. Davon hast du keinen Mehrwert. Die bash bietet eine Obermenge der sh. Was in der sh laeuft, laeuft auch in der bash. Wenn im Shebang /bin/sh steht, dann wird das von irgendeiner sh-kompatiblen Shell (z.B. der dash oder der bash) ausgefuehrt. Wenn im Shebang /bin/bash steht, dann wir sicher die bash genommen.Hans-Wilhelm hat geschrieben: Sollte ich das mal alles auf #!/bin/bash ändern [...]
Scripte mit /bin/sh im Shebang (die auch nur sh-Features beinhalten!) laufen auf jedem Unix. Steht /bin/bash im Shebang, dann wird's schon bei den BSDs schwierig, weil dort die bash oft unter /usr/pkg/bin/bash installiert ist.
Idealerweise steht im Shebang der allgemeinste Interpreter der das Script verarbeiten kann.
Und jetzt noch kurz und pragmatisch: Lass alles wie's ist.
Wenn wenig Erfahrung vorhanden ist, dann empfehle ich besser gleich /bin/bash in den Shebang zu schreiben, denn Bashisms in /bin/sh-Scripten sind schlimmer als bash-Scripte.Cae hat geschrieben: Wenn du selbst skriptest, nimm' einfach die sh, und wenn irgendwas nicht geht, guckst du in die Manpage dazu und stellst bei fehlender Funktion die Shebang auf bash um oder änderst deinen Code.
Use ed once in a while!
-
- Beiträge: 332
- Registriert: 07.06.2007 20:01:12
Re: bash, sh, zsh oder was bei Debian?
Danke für die tolle Antwort. Die Scripte mit bash sind in der Minderzahl. Ich nehme daher wieder sh. Ist wirklich nur Kinderkram. Meistens geht es um das Auslesen von Text oder html Dateien.Meillo hat geschrieben:Nein. Davon hast du keinen Mehrwert. Die bash bietet eine Obermenge der sh. Was in der sh laeuft, laeuft auch in der bash. Wenn im Shebang /bin/sh steht, dann wird das von irgendeiner sh-kompatiblen Shell (z.B. der dash oder der bash) ausgefuehrt. Wenn im Shebang /bin/bash steht, dann wir sicher die bash genommen.Hans-Wilhelm hat geschrieben: Sollte ich das mal alles auf #!/bin/bash ändern [...]
Scripte mit /bin/sh im Shebang (die auch nur sh-Features beinhalten!) laufen auf jedem Unix. Steht /bin/bash im Shebang, dann wird's schon bei den BSDs schwierig, weil dort die bash oft unter /usr/pkg/bin/bash installiert ist.
Idealerweise steht im Shebang der allgemeinste Interpreter der das Script verarbeiten kann.
Und jetzt noch kurz und pragmatisch: Lass alles wie's ist.
Wenn wenig Erfahrung vorhanden ist, dann empfehle ich besser gleich /bin/bash in den Shebang zu schreiben, denn Bashisms in /bin/sh-Scripten sind schlimmer als bash-Scripte.Cae hat geschrieben: Wenn du selbst skriptest, nimm' einfach die sh, und wenn irgendwas nicht geht, guckst du in die Manpage dazu und stellst bei fehlender Funktion die Shebang auf bash um oder änderst deinen Code.