Startseite > Umgebung & Hilfsprogramme > sh

sh: Shell-Skripte ausführen und Befehle interpretieren

`sh` ist ein Bourne-Shell-kompatibler Befehlsinterpreter. Er wird zum Ausführen von Skripten oder zur interaktiven Verarbeitung von Benutzereingaben verwendet. Auf den meisten Linux-Systemen ist `/bin/sh` ein symbolischer Link zu einer anderen Shell wie `bash` oder `dash` und bietet eine Skriptausführungsumgebung, die dem POSIX-Standard folgt.

Ü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.


Gleiche Kategorie Befehle