Unter Linux sind Dateien mit der Dateinamenerweiterung .sh normalerweise Shell-Skripte, also Programme, die von der Befehlsshell interpretiert werden. Shell-Skripte müssen keine Dateinamenerweiterung haben. Tatsächlich können sie überhaupt beliebig benannt werden. Aus historischen Gründen haben sie jedoch oft die Endung .sh.
Shellskripte ausführbar machen
Shell-Skripte müssen als ausführbar markiert werden, bevor Sie sie ausführen können. Sie können die Berechtigungen einer Datei, auch Dateimodus genannt, überprüfen, indem Sie mit dem Befehl ls -l eine lange Verzeichnisliste anzeigen. Wenn Sie den Dateinamen angeben, erhalten Sie die Informationen nur für diese Datei. Hier haben wir zum Beispiel eine Datei namens somefile, und wir sehen uns die Berechtigungen mit dem Befehl ls -l somefile an:
Die zehn Zeichen “-rw-r–r–” repräsentieren den Dateimodus von somefile. Weitere Informationen zu Dateiberechtigungen finden Sie unter Was sind Berechtigungen und wie funktionieren sie?
Hier zeigt der Dateimodus an, dass wir eine Datei lesen und schreiben, aber nicht ausführen können. Wir können die Ausführungsberechtigung mit dem Befehl chmod festlegen, der den Dateimodus ändert:
Der Befehl chmod u+x somefile setzt das Ausführungsberechtigungsbit für den Besitzer der Datei. Sie können sehen, dass die Berechtigungszeile jetzt an vierter Stelle ein x hat, das die Ausführungsberechtigungen des Eigentümers für die Datei darstellt. Beachten Sie auch, dass der Dateiname farbig aufgeführt ist (hier grün dargestellt). Die Farbe kann auf Ihrem System anders sein, aber viele Linux-Distributionen sind so konfiguriert, dass sie ausführbare Dateien mit einer anderen Farbe anzeigen, wenn Sie den Befehl ls ausführen.
Sie können denselben Vorgang für jede .sh-Skriptdatei ausführen, die Sie möglicherweise ausführen müssen. Wenn Sie beispielsweise ein benutzerdefiniertes Skript schreiben und es myscript.sh nennen, führen Sie chmod u+x myscript.sh aus, bevor Sie versuchen, es auszuführen.
Ausführen eines Skripts über die Befehlszeile
Um ein Shell-Skript auszuführen, müssen Sie den Pfadnamen des Skripts an der Eingabeaufforderung angeben. Wenn das Skript beispielsweise install.sh heißt und sich in Ihrem Arbeitsverzeichnis befindet, können Sie es mit dem folgenden Befehl ausführen.
./install.sh
Der obige Befehl teilt der Shell mit, “die Datei install.sh auszuführen, die sich im aktuellen Verzeichnis befindet”. Wenn sich install.sh im Verzeichnis myscripts in Ihrem Home-Verzeichnis befindet, können Sie es mit dem folgenden Befehl ausführen.
~/myscripts/install.sh
Geben Sie als Sicherheitsmaßnahme den Pfadnamen zur Skriptdatei an (anstatt inshall.sh einzugeben). Die Shell möchte sicherstellen, dass die richtige install.sh ausgeführt wird, und fordert Sie auf, den genauen Speicherort anzugeben.
Die einzige Ausnahme ist, wenn sich Ihr Skript in einem Verzeichnis befindet, das in der PATH-Umgebungsvariable Ihres Systems aufgeführt ist. Wenn dies der Fall wäre, könnten Sie die Datei ausführen, indem Sie den Befehl install.sh ausführen.