# Shell (Betriebssystem)

Als Shell wird in der Informatik allgemein eine Systemsoftware bezeichnet, die die Fähigkeiten eines Betriebssystems sowohl einem menschlichen Benutzer als auch anderen Programmen zugänglich macht. Während „Kernel“ den Kern eines Betriebssystems bezeichnet, steht „Shell“ (englisch shell ‚Schale‘, ‚Hülle‘ oder ‚Außenhaut‘) anschaulich für dessen äußerste Schicht: die Benutzerschnittstelle (englisch user interface, UI). Ein Mensch kann darüber mit dem Betriebssystem interagieren.

## Allgemein

Üblicherweise starten Betriebssysteme am Ende des Hochfahrens eine primäre Shell-Instanz und -Sitzung, die im Normalbetrieb erst beim Ausschalten/​Herunterfahren/​Abmelden beendet wird und typischerweise eine Anmeldung erfordert. Die Shell-Instanz erzeugt zur Laufzeit (englisch runtime) eine Arbeitsumgebung (englisch environment). Innerhalb dieser Umgebung können Programme gestartet werden und laufen (vgl. Laufzeitumgebung). Freilich können dies auch weitere, sekundäre (Sub-)Shells sein – sowohl zusätzliche Instanzen derselben oder einer anderen Software.
Je nach Zweck und Leistung eines Computers und seines Betriebssystems werden unterschiedliche Typen von Shells eingesetzt. Eine Shell hat typischerweise entweder …
* eine Befehlszeilenschnittstelle (englisch command-line interface, CLI) und arbeitet zeilenweise und zeichenorientiert im Textmodus, oder …
* eine grafische Benutzerschnittstelle (englisch graphical user interface, GUI) und arbeitet pixelorientiert im Grafikmodus.
Im allgemeinen Sprachgebrauch ist „grafische Shell“ noch nicht sehr etabliert und findet sich eher in neuerer Lektüre. Oft wird fälschlich von „GUI“ oder „Desktop-Umgebung“ gesprochen.

## „Klassische“ Shell, mit CLI

Eine zeilenweise Text verarbeitende Shell – nachfolgend Textshell genannt – stellt dem Benutzer eine Arbeitsumgebung zur Text-Eingabe und -Ausgabe mit einer sogenannten Befehlszeile (englisch command line) bereit, in die eingegebene Befehle bzw. Kommandos (englisch commands) von einem Interpreter umgesetzt und ausgeführt werden. Außer den ganz frühen Shells stellen Textshells ihre eigene, für sie typische, oder teilweise normierte Skriptsprache bereit; da die Befehle und die Syntax bekannt sein müssen, wird diese Skriptsprache vornehmlich von erfahrenen Benutzern verwendet.
Der Ursprung von Textshells als Skriptsprache für Betriebssysteme findet sich bei Multics, wo das Wort „Shell“ um 1965 auftaucht (siehe Shellskript#Ursprung). Derlei Textshells finden sich primär in Form von Unix-Shells (Bash, TENEX-C-Shell, Z shell etc.) als elementarer Bestandteil von Unix- und ähnlichen Systemen und als Kommandozeileninterpreter von u. a. Disk-Operating-Systemen (kurz: „DOS“). Auch grafische Betriebssysteme haben meist eine Shell, etwa Windows und macOS. Diese ermöglichen in einem Fenster die Text-basierte Ein- und Ausgabe, als Teil einer grafischen Benutzeroberfläche (Terminalemulation) allerdings auch z. B. Cut & Paste und Drag & Drop. In Windows gibt es neben der klassischen Eingabeaufforderung aus dem MS-DOS-Erbe auch die neuere und funktionsreichere PowerShell, andere Shells (etwa Bash) können vom Benutzer installiert werden. Bei macOS sind aufgrund des BSD-Unix-Kerns (siehe Darwin) ebenfalls Unix-Shells enthalten.

## Grafische Shell, mit GUI

Eine grafische Shell stellt eine Umgebung mit einer grafischen Schnittstelle zur Benutzung bereit, die als Benutzeroberfläche bezeichnet wird. „Auf“ dieser zweidimensionalen Oberfläche sind Bedienungs- bzw. Steuerelemente mit Symbolen oder Textbeschriftungen zu finden, die bevorzugt eine dreidimensionale Tiefe anhand visueller Effekte suggerieren – beispielsweise scheinen Fenster übereinander zu liegen oder eine Schaltfläche wirkt erhaben, und beim Auslösen wird sie augenscheinlich eingedrückt. So ist ein Betriebssystem einfacher zugänglich, da Funktionen, Routinen oder Unterprogramme mittels Mausklick oder Fingertipp auf ein Element aufgerufen werden können. Desktop-Umgebungen bei Personalcomputern sowie die Umgebungen von Smartphones und modernen Fernsehern beispielsweise bilden grafische Shells. Oft kann eine Terminalemulation benutzt werden, die eine Textshell bereitstellt (z. B. Bash, PowerShell etc.).