12.9bash-Script-Syntax
Shell-Scripts sollten mit einer Zeile beginnen, die aus den Zeichen #! und dem gewünschten Shell-Namen zusammengesetzt ist. In diesem Fall wird zur Ausführung der Datei automatisch die gewünschte Shell gestartet. Für die meisten Shell-Scripts ist #!/bin/sh die richtige Wahl. Nur wenn Sie bash-spezifische Funktionen einsetzen, sollten Sie explizit #!/bin/bash angeben.
Shell-Scripts können nur ausgeführt werden, wenn die Zugriffsbits für den Lesezugriff (r) und die Ausführung (x) gesetzt sind (chmod ug+rx datei). Falls sich Scripts auf externen Datenträgern bzw. Partitionen befinden, müssen Sie sicherstellen, dass das Dateisystem mit der exec-Option in den Verzeichnisbaum eingebunden ist.
Vorsicht mit Sonderzeichen
In der ersten Zeile eines Scripts dürfen keine deutschen Sonderzeichen verwendet werden, auch nicht in Kommentaren. Die bash weigert sich sonst, die Datei auszuführen, und liefert die Meldung cannot execute binary file.
In Shell-Script-Dateien dürfen die Zeilen nicht durch die Windows-typische Kombination aus Carriage Return und Linefeed getrennt sein. Das kann z.B. passieren, wenn die Dateien unter Windows erstellt und dann nach Linux kopiert wurden. In diesem Fall liefert bash die wenig aussagekräftige Fehlermeldung bad interpreter. Bei Unicode- Dateien (UTF8) sorgt das folgende Kommando für die richtige Zeilentrennung:
recode u8/cr-lf..u8 < windowsdatei > \ linuxdatei
Wenn Sie eine Sammlung eigener Shell-Script-Programme für den täglichen Gebrauch schreiben, ist es sinnvoll, diese an einem zentralen Ort zu speichern. Als Verzeichnis bietet sich ~/bin an. Wenn Sie anschließend folgende Änderung in .profile vornehmen, können diese Script-Programme ohne eine komplette Pfadangabe ausgeführt werden. (Bei manchen Distributionen ist das gar nicht notwendig, dort ist ~/bin immer Bestandteil von PATH.)