Startseite
» MAC OS X
»
So führen Sie ein Shell-Skript (.sh) unter macOS aus
So führen Sie ein Shell-Skript (.sh) unter macOS aus
Um ein Shell-Skript unter macOS auszuführen , öffnen Sie das Terminal, wechseln Sie in den Ordner mit der .shDatei und führen Sie sie mit dem zugehörigen Interpreter aus. Beispielsweise bash hello.shführt `shell-executive` ein Bash-Skript aus, ohne dessen Berechtigungen zu ändern. Wenn Sie es als Befehl ausführen möchten, machen Sie es mit `shell-executive` ausführbar chmod +x hello.shund führen Sie anschließend ` shell-executive` aus ./hello.sh. Diese Methoden funktionieren mit aktuellen macOS-Versionen.
Überprüfen Sie das Skript, bevor Sie es ausführen.
Ein Shell-Skript ist eine einfache Textdatei mit Befehlen. Diese Befehle werden mit den Berechtigungen Ihres Benutzerkontos ausgeführt, sodass ein Skript Dateien bearbeiten oder löschen, Software installieren oder Daten über ein Netzwerk senden kann. Lesen Sie jedes Skript sorgfältig durch, bevor Sie es ausführen, insbesondere wenn es nach einem Administratorpasswort fragt oder Befehle verwendet sudo. Führen Sie Skripte nur aus vertrauenswürdigen Quellen aus; das Ändern der Dateiberechtigungen macht deren Inhalt nicht sicherer.
Apple beschreibt Shell-Skripte als Textdateien, die UNIX-Befehle enthalten, und erklärt, wie ein Shebang die Shell auswählt, die das Skript ausführt. Siehe Apples Terminal-Leitfaden zu Shell-Skripten .
Führe ein .sh-Skript mit Bash aus
Dies ist die einfachste Methode, ein Bash-Skript auszuführen. Sie müssen nicht vorher die Ausführungsberechtigung hinzufügen.
Erstellen oder suchen Sie das Skript. Ein Shell-Skript kann in jedem beliebigen Texteditor geschrieben werden. Für einen schnellen Test öffnen Sie TextEdit, wählen Sie Format > In Klartext umwandeln und geben Sie diese beiden Zeilen ein:
#!/bin/bash
echo "Hello from macOS"
Speichern Sie die Datei unter dem Namen hello.sh. Überprüfen Sie im Speicherdialog, ob der Name auf . endet .shund ob TextEdit nicht .txt. hinzugefügt hat. Die erste Zeile ist der Shebang: Er identifiziert Bash als Interpreter, wenn das Skript direkt ausgeführt wird. Die zweite Zeile gibt eine kurze Meldung aus.
Die Beispieldatei hello.sh enthält ein Shebang, gefolgt von einem Befehl, der Text ausgibt.
Öffnen Sie das Terminal und wechseln Sie in den Ordner der Datei. Drücken Sie Befehl-Leertaste, geben Sie „Terminal“ ein und drücken Sie die Eingabetaste. Wenn Sie die Datei im Ordner „Downloads“ gespeichert haben, geben Sie Folgendes ein:
cd ~/Downloads
Drücken Sie nach jedem Befehl die Eingabetaste. Sie können lsDateien auflisten und überprüfen, ob sie hello.shvorhanden sind. Wechseln Sie Downloadsin den tatsächlich verwendeten Ordner. Enthält ein Ordner- oder Dateiname Leerzeichen, setzen Sie den Pfad in Anführungszeichen, z. B. cd "$HOME/My Scripts".
Öffnen Sie mit dem Befehl cd den Ordner, der das Skript enthält, und überprüfen Sie anschließend dessen Namen mit dem Befehl ls.
Führe das Skript mit Bash aus. Gib den Skriptnamen nach dem Doppelpunkt ein bash.
bash hello.sh
Das Terminal sollte die Ausgabe anzeigen Hello from macOS. Wenn das Skript Zsh-Syntax anstelle von Bash verwendet, führen Sie den Befehl aus zsh hello.sh. Die im Terminal interaktiv geöffnete Shell ist üblicherweise Zsh, aber das bedeutet nicht, dass jedes Skript mit Zsh ausgeführt werden muss. Verwenden Sie den Interpreter, für den das Skript geschrieben wurde. Der Shebang eines Skripts gibt oft den verwendeten Interpreter an.
Führe das Skript als ausführbare Datei aus.
Sie können ein Skript auch direkt über seinen Pfad starten. Dies ist nützlich, wenn Sie es wie einen kleinen Befehl ausführen möchten. Apples Terminal-Anleitung zum Erstellen einer ausführbaren Datei verwendet chmoddiesen Schritt.
Gewähren Sie die Ausführungsberechtigung. Führen Sie im selben Terminalfenster und Ordner Folgendes aus:
chmod +x hello.sh
Dadurch wird dieser Datei die Ausführungsberechtigung erteilt. Dies ist eine einmalige Änderung, sofern die Berechtigungen nicht später zurückgesetzt werden. Vermeiden Sie weitergehende Berechtigungseinstellungen als nötig; chmod +xdiese sind für ein persönliches Skript, dessen Eigentümer Sie sind, ausreichend.
Der Befehl chmod +x kennzeichnet hello.sh als ausführbar.
Starten Sie es aus dem aktuellen Ordner. Geben Sie Folgendes ein:
./hello.sh
Der ./Parameter weist die Shell an, die Datei im aktuellen Verzeichnis auszuführen. Ohne diesen Parameter durchsucht die Shell in der Regel die in der Liste aufgeführten Ordner PATHanstatt des aktuellen Verzeichnisses. Befinden Sie sich in einem anderen Verzeichnis, verwenden Sie entweder den cdBefehl `cd`, um zum Skriptordner zurückzukehren, oder geben Sie den vollständigen Pfad an, beispielsweise `/usr/local/bin/` ~/Downloads/hello.sh.
Durch Ausführen von ./hello.sh wird das ausführbare Skript gestartet und dessen Ausgabe angezeigt.
Häufige Fehler und deren Behebung
Nach der Verwendung von „Zugriff verweigert“ ./hello.sh: Bestätigen Sie den Dateinamen und führen Sie ihn dann erneut aus chmod +x hello.sh. Oder verwenden Sie , bash hello.shfalls es sich um ein Bash-Skript handelt und keine direkte Ausführung erforderlich ist.
„Datei oder Verzeichnis nicht gefunden“: Bestätigen Sie den Ordner mit `cd` pwd, listen Sie seinen Inhalt mit `cd` auf lsund überprüfen Sie Rechtschreibung und Groß-/Kleinschreibung. Stellen Sie sicher, dass die Datei nicht tatsächlich den Namen `.` trägt hello.sh.txt.
Die Fehlermeldung „Befehl nicht gefunden“ im Skript bedeutet, dass das Skript möglicherweise auf ein fehlendes oder nicht installiertes Hilfsprogramm angewiesen ist PATH. Bitte lesen Sie die Dokumentation des Skripts, bevor Sie etwas installieren.
^MDie Fehlermeldung „Ungültiger Interpreter“ oder eine ähnliche Meldung deutet möglicherweise auf einen nicht verfügbaren Interpreter hin oder die Datei verwendet Windows-Zeilenumbrüche. Überprüfen Sie das Shebang und speichern Sie die Datei mit Unix-Zeilenumbrüchen (LF).
Welche Methode sollten Sie anwenden?
Verwenden Sie `start` bash hello.shfür eine schnelle Ausführung, wenn Sie wissen, dass es sich um ein Bash-Skript handelt. Verwenden Sie `start` chmod +x hello.shgefolgt von ` ./hello.shstart`, wenn Sie es direkt starten und den Interpreter anhand des Shebangs auswählen lassen möchten. Keine der beiden Methoden installiert fehlende Abhängigkeiten, behebt inkompatible Befehle oder überprüft die Vertrauenswürdigkeit des Skripts.