Wie steige ich aus der While Schleife aus, ohne das bash Script zu beenden?
-
tntnet schrieb:
Zu der Diskussion, ob bash irgendwo Standard ist. Ich habe hier fedora und da zeigt /bin/sh auf bash.
Das macht Bash aber nicht zu irgendeiner Art von Standard-sh.
Bash im Shebang anzugeben ist nicht erst seit der Ubuntu-Umstellung wichtig. Die BSDler freuen sich schon seit langer Zeit nicht sehr über Bashismen in Shellskripten, die sh statt bash im Shebang haben.
Bash Newbie: Verwende einstweilen einfach mal
#!/usr/bin/env bash
als Shebang; das wird idR. auf jedem relevanten System, wo auch eine Bash installiert ist, funktionieren. Wenn keine Bash im Pfad ist, bekommt man eben eine Fehlermeldung, aber das ist ja typischerweise auch das gewünschte Verhalten.
-
Bash Newbie schrieb:
SeppJ schrieb:
[ … Geflame über ein Bash Tutorial … ]
#!/bin/[b]sh[/b]
Na super.
Kann mir mal jemand sagen, warum Ubuntu die dash als Standardshell verwendet?
Oh, das ist wohl auch ein Missverständnis.
Um das nochmal zu betonen:
sh
ist nicht einfach _irgendeine_ Standard-Shell. sh ist die Bourne Shell, die zufällig schon lange eine Standard-Shell ist. Die GNU bash verhält sich hinreichend ähnlich wie eine Bourne-Shell, dass viele Distros sh auf bash verlinkt haben, aber wenn du irgendwelche Bash-spezifischen Features verwenden möchtest, musst du auch die Bash in deinen Shebang packen.
-
nman schrieb:
Bash Newbie schrieb:
Kann mir mal jemand sagen, warum Ubuntu die dash als Standardshell verwendet?
Oh, das ist wohl auch ein Missverständnis.
Um das nochmal zu betonen:
sh
ist nicht einfach _irgendeine_ Standard-Shell. sh ist die Bourne Shell, die zufällig schon lange eine Standard-Shell ist. Die GNU bash verhält sich hinreichend ähnlich wie eine Bourne-Shell, dass viele Distros sh auf bash verlinkt haben, aber wenn du irgendwelche Bash-spezifischen Features verwenden möchtest, musst du auch die Bash in deinen Shebang packen.Ergänzend sollte erwähnt werden, dass auch die dash sich hinreichend ähnlich zur Bourne-Shell verhält. Daher ist bei einem Bourne-Shell egal, ob /bin/sh auf bash, dash oder sonstwas zeigt.
Dash ist halt kleiner und lädt unter anderem daher schneller als die bash. Und da beim Booten viele (Bourne-)Shell-Skripte ausgeführt werden, hat sich Debian entschlossen, /bin/sh auf /bin/dash zu verlinken. Das verkürzt dann die Bootzeit. Und da Ubuntu auf Debian basiert, findest Du das auch bei Ubuntu.
-
Ja, ich habe es inzwischen verstanden.
Aber welches Tutorial oder online Buch würdet ihr mir empfehlen um nur die Bourne Shell zu lernen?
-
Hi,
ich habe das hier:
Shell-Skript-Programmierung | ISBN: 3826617991Allerdings eine ältere Version, finde es aber sehr gut.
EDIT: Warum? Weil eben auch auf die unterschiedlichen Shells eingegangen wird und Unterschiede erklärt werden.