Ü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/sh` in die erste Zeile des Skripts zu schreiben, um anzugeben, dass das Skript mit `sh` ausgeführt werden soll.
- Erweiterte Funktionen anderer Shells wie `bash` oder `zsh` (z. B. Arrays, erweiterte Mustererkennung, `[[ ... ]]`-Bedingungen) funktionieren möglicherweise nicht in `sh`. Verwenden Sie daher nur POSIX-kompatible Syntax.
- Die Option `-x` ist 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.