Was ist eine Shell und wozu dient sie?
Autor: Redaktion Domeny.ForSale Veröffentlicht
Kurz gesagt: Eine Shell ist ein Programm, das Benutzerbefehle entgegennimmt und damit Programme startet sowie Aktionen im System ausführt. Meist ist eine textbasierte Shell wie Bash, Zsh oder PowerShell gemeint. Eine Shell ist nicht dasselbe wie ein Terminal: Das Terminal bietet die Umgebung zur Eingabe von Befehlen, die Shell interpretiert sie.
Wozu dient eine Shell?
Mit einer Shell kannst du einen Computer über Befehle bedienen, statt auf Schaltflächen und Symbole zu klicken. Du kannst Verzeichnisse durchsuchen, Dateien kopieren, Anwendungen starten, laufende Prozesse prüfen oder einen Server verwalten. Welche Aktionen möglich sind, hängt vom System, den installierten Programmen und den Berechtigungen des Benutzerkontos ab.
Wenn du einen Befehl eingibst, erkennt die Shell dessen Namen und zusätzliche Argumente. Diese legen fest, wie die Aufgabe ausgeführt werden soll. Anschließend führt die Shell eine eigene Funktion aus oder startet ein externes Programm. Beim Befehl python skript.py startet sie beispielsweise den Python-Interpreter und übergibt ihm den Namen der auszuführenden Datei. Den Python-Code interpretiert sie nicht selbst.
Shells sind besonders bei wiederkehrenden Aufgaben hilfreich. Statt mehrere Dutzend Dateien von Hand umzubenennen, kannst du eine Befehlsfolge vorbereiten, die alle nach derselben Regel umbenennt. Eine solche in einer Datei gespeicherte Befehlsfolge heißt Shell-Skript.
Der Begriff „Shell“ hat auch eine weiter gefasste Bedeutung: Er kann eine grafische Benutzeroberfläche des Systems bezeichnen. In der Entwicklerdokumentation und bei der Serveradministration ist damit jedoch meist eine textbasierte Shell gemeint.
Shell, Terminal, Konsole und SSH – was ist der Unterschied?
Diese Begriffe werden manchmal synonym verwendet, beschreiben aber unterschiedliche Bestandteile der Arbeit mit einem Computer:
| Begriff | Bedeutung |
|---|---|
| Shell | Programm, das Befehle interpretiert, etwa Bash oder PowerShell. |
| Terminal | Anwendung für textbasierte Ein- und Ausgabe, in der eine Shell laufen kann, etwa Windows Terminal. |
| Konsole | Kontextabhängiger Begriff; kann ein Systemterminal oder umgangssprachlich ein Befehlsfenster bezeichnen. |
| SSH | Protokoll für eine sichere Verbindung zu einem anderen Computer, häufig um in dessen Shell zu arbeiten. |
Du kannst also Windows Terminal öffnen, darin PowerShell starten und dich anschließend über SSH mit einem Linux-Server verbinden. Nach der Anmeldung kann Bash auf dem Server die Befehle verarbeiten. Das Fenster bleibt dasselbe, aber der Computer, der die Befehle ausführt, und die verwendete Shell ändern sich.
Diese Unterscheidung ist beim Lesen von Anleitungen wichtig. Ein Befehl mit dem Hinweis „ins Terminal einfügen“ kann eine bestimmte Shell, ein bestimmtes System oder ein zusätzliches Programm voraussetzen. Ein beliebiges Textfenster zu öffnen, stellt noch keine Kompatibilität sicher.
Verbreitete Shells und ihre Einsatzgebiete
Bash wird häufig auf Linux-Systemen und in Administrationsskripten verwendet. Zsh ist die standardmäßige interaktive Shell für neue Benutzerkonten in aktuellen macOS-Versionen; sie ist auch unter Linux verbreitet. Beide haben viele ähnliche Befehle und Konstrukte, aber nicht jedes Skript funktioniert in beiden gleich.
PowerShell wird vor allem für Automatisierung und Administration entwickelt. Die Shell läuft unter Windows; aktuelle Versionen sind auch für Linux und macOS verfügbar. Anders als die typischen Text-Pipelines in Bash können Pipelines in PowerShell strukturierte Objekte weitergeben, etwa Prozessinformationen mit getrennten Feldern für Name und Kennung.
cmd.exe, der klassische Befehlsinterpreter von Windows, kommt weiterhin in älteren Anleitungen und Batch-Skripten vor. Er ist kein anderer Name für PowerShella. Die Befehle und die Syntax dieser beiden Shells unterscheiden sich, obwohl beide in Windows Terminal laufen können.
Für den Einstieg musst du keine neue Shell installieren. Nutze die Shell, die in deiner Umgebung verfügbar ist, und prüfe, für welches System und welche Shell die jeweilige Anleitung geschrieben wurde.
Erste Befehle: ein einfaches Beispiel
Ein sicherer Einstieg ist, das aktuelle Verzeichnis zu prüfen und seinen Inhalt anzuzeigen. Das aktuelle Verzeichnis ist der Ausgangspunkt, von dem aus die Shell nicht vollständig angegebene Pfade auswertet.
Gib in Bash oder Zsh nacheinander Folgendes ein:
pwd
ls
mkdir shell-uebung
cd shell-uebung
pwd
Der Befehl pwd zeigt das aktuelle Verzeichnis an, ls listet dessen Inhalt auf und mkdir erstellt ein neues Verzeichnis. Mit cd wechselst du in das angegebene Verzeichnis. Dieses Beispiel löscht keine Dateien. Es erstellt den Ordner shell-uebung, sofern du die nötigen Berechtigungen hast und dieser Ordner noch nicht existiert.
In PowerShellu sieht die entsprechende Befehlsfolge mit ausgeschriebenen Befehlsnamen so aus:
Get-Location
Get-ChildItem
New-Item -ItemType Directory -Name shell-uebung
Set-Location shell-uebung
Get-Location
Enthält ein Pfad Leerzeichen, setze ihn in Anführungszeichen, etwa cd "Meine Dokumente". Ohne sie kann die Shell die einzelnen Teile des Pfads als getrennte Argumente behandeln.
Wie arbeitest du sicher mit einer Shell?
Eine Shell ist nicht grundsätzlich gefährlich, ermöglicht aber schnelle Aktionen an vielen Dateien. Besondere Vorsicht ist bei Befehlen geboten, die Daten löschen, Berechtigungen ändern oder als Administrator ausgeführt werden. Wird eine Datei per Befehl gelöscht, landet sie nicht unbedingt im Papierkorb.
Prüfe vor dem Ausführen eines unbekannten Befehls seine Bedeutung und das aktuelle Verzeichnis. Kopiere keine Befehlsfolgen, die ein Skript aus dem Internet herunterladen und sofort ausführen, ohne sie zu verstehen. Wenn du über SSH auf einem Server arbeitest, vergewissere dich außerdem, ob du dich in einer Test- oder einer Produktionsumgebung befindest.
Führe die ersten Übungen in einem eigenen Verzeichnis mit Kopien unwichtiger Dateien durch. Als Nächstes kannst du dir die Hilfe zu einem Befehl ansehen: Verwende in Bash help cd und in PowerShellu Get-Help Set-Location.
