Shell
Kurz: Ein Programm, das eine textbasierte Befehlszeile bereitstellt, über die man das Betriebssystem steuert.
Genauer: Nimmt Kommandos entgegen (Dateien anzeigen, Programme starten, Skripte ausführen) und gibt sie an das Betriebssystem weiter. Bekannte Beispiele: Bash/Zsh unter Linux/macOS, CMD und PowerShell unter Windows. Die Secure Shell (SSH) erlaubt den verschlüsselten Fernzugriff auf die Shell eines anderen Rechners.
Im Detail
Shell als Interface, nicht als Kernel
Eine Shell ist streng genommen nur EIN mögliches Interface zum Betriebssystem-Kernel — der eigentliche “Kern” (Prozessverwaltung, Speicher, Dateisystem) bleibt derselbe, egal ob per grafischer Oberfläche oder per Shell gesteuert. Der Name “Shell” (Schale) drückt genau das aus: sie umhüllt den Kernel und übersetzt menschenlesbare Befehle in Systemaufrufe, ohne selbst Teil des Kernels zu sein — eine Shell lässt sich abstürzen und neu starten, ohne dass das System selbst betroffen ist.
Interaktiv vs. skriptgesteuert
Eine Shell lässt sich auf zwei Arten nutzen: interaktiv (Befehl eingeben, Ergebnis sehen, nächsten Befehl eingeben) oder als Interpreter für Skripte (eine ganze Datei mit Befehlen am Stück abarbeiten). Der zentrale Vorteil gegenüber grafischer Bedienung ist Skriptbarkeit: eine Abfolge von Befehlen lässt sich in eine Datei schreiben (Skript) und beliebig oft, exakt identisch, automatisiert ausführen — ein Klickpfad durch mehrere GUI-Menüs lässt sich dagegen kaum zuverlässig automatisieren oder in eine Versionskontrolle einchecken.
Pipes und Komposition
Ein zentrales Konzept vieler Shells, besonders ausgeprägt in Unix-Shells, ist die Pipe (|): die Ausgabe eines Befehls wird direkt zur Eingabe des nächsten:
cat zugriffslog.txt | grep "ERROR" | wc -lDieses Beispiel zählt, wie viele Zeilen einer Logdatei den Text “ERROR” enthalten — drei winzige, jeweils für sich einfache Befehle (Datei ausgeben, filtern, Zeilen zählen) werden zu einer komplexen Auswertung kombiniert. Diese “kleine Werkzeuge kombinieren”-Philosophie ist ein Grundprinzip der Unix-Designphilosophie und macht Shells so mächtig, obwohl die Einzelbefehle jeweils simpel bleiben.
Unterschiede zwischen Shells
Unix-artige Shells (Bash, Zsh, Fish) und Windows-Shells (CMD, PowerShell) unterscheiden sich in Syntax und Fähigkeiten erheblich. CMD ist funktional eingeschränkter und reicht nur Text zwischen Befehlen weiter. PowerShell arbeitet mit strukturierten .NET-Objekten statt reinem Text. Bash/Zsh bieten eine reichhaltige, jahrzehntelang gewachsene Kommandosprache mit Pipes, Umleitungen (>, >>, 2>) und Kontrollstrukturen — Zsh (Standard-Shell auf macOS seit 2019) erweitert Bash um Komfortfunktionen wie bessere Autovervollständigung, bleibt aber weitgehend kompatibel zu Bash-Skripten.
Siehe auch: Befehlszeile, Secure Shell, Bash, CMD