Übersicht
`sh` ist eine der Standard-Shells in Unix- und Linux-Systemen und wird zur Ausführung von Skripten und zur interaktiven Befehlsverarbeitung verwendet. Da es den POSIX-Standard strikt einhält, sind Skripte, die für `sh` geschrieben wurden, auf verschiedenen Systemen gut kompatibel.
Hauptmerkmale
- POSIX-Kompatibilität: Bietet die Grundlage für das Schreiben von Standard-Shell-Skripten
- Skriptausführung: Führt eine Sequenz von Befehlen aus, die in einer Datei gespeichert sind
- Interaktive Befehlsinterpretation: Verarbeitet Befehle, die direkt vom Benutzer eingegeben werden
- Systemstandard: Ist auf den meisten Unix/Linux-Systemen vorinstalliert
Wichtige Optionen
`sh` bietet verschiedene Optionen, die die Skriptausführung oder das Debugging beeinflussen.
Skriptausführung und Debugging
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`sh` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele
Skriptdatei ausführen
sh my_script.sh
Führt eine angegebene Shell-Skriptdatei mit `sh` aus.
Befehlszeichenfolge direkt ausführen
sh -c "echo 'Hello from sh!' && ls -l"
Führt eine in Anführungszeichen gesetzte Befehlszeichenfolge mit `sh` unter Verwendung der Option `-c` aus.
Skript im Debugging-Modus ausführen
sh -x debug_script.sh
Verfolgt den Ausführungsablauf des Skripts mit der Option `-x` zum Debugging.
Befehle von der Standardeingabe ausführen
echo "ls -a" | sh
Führt Befehle aus, die über eine Pipe an `sh` übergeben werden.
Bei Fehler sofort beenden
sh -e error_prone_script.sh
Stellt sicher, dass das Skript sofort beendet wird, wenn ein Fehler auftritt.
Tipps & Hinweise
`sh` ist ein mächtiges Werkzeug, aber es ist wichtig, die Unterschiede zu anderen Shells zu verstehen.
Beim Schreiben von Skripten
- Es ist ratsam,
#!/bin/shin die erste Zeile des Skripts zu schreiben, um anzugeben, dass das Skript mitshausgeführt werden soll. - Erweiterte Funktionen anderer Shells wie
bashoderzsh(z. B. Arrays, erweiterte Mustererkennung,[[ ... ]]-Bedingungen) funktionieren möglicherweise nicht insh. Verwenden Sie daher nur POSIX-kompatible Syntax. - Die Option
-xist beim Debugging sehr nützlich, um den Ablauf des Skripts zu verstehen und Variablenwerte zu überprüfen.
Kompatibilität
Auf den meisten Linux-Distributionen ist /bin/sh ein symbolischer Link zu dash (Debian/Ubuntu-basiert) oder bash (Red Hat/Fedora-basiert). Daher werden sh-Skripte im POSIX-kompatiblen Modus der verknüpften Shell ausgeführt. Dies kann zu einem anderen Verhalten als bei bash-Skripten führen.