Was ist eine Shell?
Eine Shell ist ein Programm, das eine Schnittstelle zwischen einem Benutzer und dem Kernel eines Betriebssystems (OS) bildet. Ein Betriebssystem startet eine Shell für jeden Benutzer, wenn der Benutzer sich anmeldet oder ein Terminal- oder Konsolenfenster öffnet.
Ein Kernel ist ein Programm, das:
- alle Computeroperationen steuert.
- alle ausführenden Dienstprogramme koordiniert
- sicherstellt, dass sich die ausführenden Dienstprogramme nicht gegenseitig stören oder alle Systemressourcen verbrauchen.
- Verteilt und verwaltet alle Systemprozesse.
Durch die Verbindung mit dem Kernel bietet die Shell dem Benutzer die Möglichkeit, Dienstprogramme und Programme auszuführen.
Benutzerumgebung
Die Shell bietet auch eine Benutzerumgebung, die Sie mithilfe von Initialisierungsdateien anpassen können. Diese Dateien enthalten Einstellungen für Merkmale der Benutzerumgebung, wie zum Beispiel:
- Suchpfade zum Auffinden von Befehlen.
- Standardberechtigungen für neue Dateien.
- Werte für Variablen, die von anderen Programmen verwendet werden.
- Werte, die Sie anpassen können.
Was sind die verschiedenen Shells?
Die folgenden Abschnitte beschreiben Betriebssystem-Shells, die hauptsächlich auf UNIX/Linux-Betriebssystemen verfügbar sind. Shell-Funktionen und ihre Standard-Eingabeaufforderungen werden ebenfalls beschrieben.
Die Bourne-Shell
Die Bourne-Shell (sh), geschrieben von Steve Bourne bei AT&T Bell Labs, ist die ursprüngliche UNIX-Shell. Sie ist die bevorzugte Shell für die Shell-Programmierung wegen ihrer Kompaktheit und Geschwindigkeit. Ein Nachteil der Bourne-Shell ist das Fehlen von Funktionen für den interaktiven Gebrauch, wie z.B. die Möglichkeit, vorherige Befehle abzurufen (History). Der Bourne-Shell fehlt es auch an eingebauter Arithmetik und logischen Ausdrücken.
Die Bourne-Shell ist die Standardshell des Solaris-Betriebssystems. Sie ist die Standardshell für Solaris-Systemverwaltungsskripte. Für die Bourne-Shell gilt:
- Der vollständige Pfadname eines Befehls ist /bin/sh und /sbin/sh.
- Die Standard-Eingabeaufforderung für Nicht-Root-Benutzer ist $.
- Die Standard-Eingabeaufforderung für Root-Benutzer ist #.
Die C-Shell
Die C-Shell (csh):
- Ist eine UNIX-Erweiterung, die von Bill Joy an der University of California in Berkeley geschrieben wurde.
- Integrierte Funktionen für den interaktiven Gebrauch, wie Aliase und Befehlshistorie.
- Enthält bequeme Programmierfunktionen, wie eingebaute Arithmetik und eine C-ähnliche Ausdruckssyntax.
Für die C-Shell gilt:
- Der vollständige Pfadname des Befehls ist /bin/csh.
- Die Standard-Eingabeaufforderung für Nicht-Root-Benutzer ist hostname %.
- Die Standard-Eingabeaufforderung für Root-Benutzer ist der Hostname #.
Die Korn-Shell
Die Korn-Shell (ksh):
- Wurde von David Korn bei AT&T Bell Labs geschrieben
- Ist eine Obermenge der Bourne-Shell.
- Unterstützt alles, was die Bourne-Shell bietet.
- Hat interaktive Funktionen, die mit denen der C-Shell vergleichbar sind.
- Enthält komfortable Programmierfunktionen wie eingebaute Arithmetik und C-ähnliche Arrays, Funktionen und String-Manipulationsmöglichkeiten.
- Ist schneller als die C-Shell.
- Führt Skripte aus, die für die Bourne-Shell geschrieben wurden.
Für die Korn-Shell gilt:
- Der vollständige Pfadname des Befehls ist /bin/ksh.
- Der Standardprompt für Nicht-Root-Benutzer ist $.
- Der Standardprompt für Root-Benutzer ist #.
Die GNU Bourne-Again Shell
Die GNU Bourne-Again Shell (bash):
- Ist kompatibel zur Bourne Shell.
- Integriert nützliche Funktionen der Korn und C Shells.
- Hat Pfeiltasten, die automatisch für den Befehlsaufruf und die Bearbeitung zugeordnet sind.
Für die GNU Bourne-Again-Shell gilt:
- Der vollständige Pfadname des Befehls ist /bin/bash.
- Der Standard-Prompt für einen Nicht-Root-Benutzer ist bash-x.xx$. (Wobei x.xx die Versionsnummer der Shell angibt, z.B. bash-3.50$)
- Standard-Prompt für einen Root-Benutzer ist bash-x.xx#. (Wobei x.xx die Versionsnummer der Shell angibt, z.B. bash-3.50$#)
Hier ist ein kurzer Vergleich der 4 Shells und ihrer Eigenschaften.
Shell | Pfad | Standard Eingabeaufforderung (nichtRoot-Benutzer) | Standard-Eingabeaufforderung (Root-Benutzer) |
---|---|---|---|
Die Bourne Shell (sh) | /bin/sh und /sbin/sh | $ | # |
Die C Shell (csh) | /bin/csh | % | # |
Die Korn Shell (ksh) | /bin/ksh | $ | # |
Die GNU Bourne-Again Shell (Bash) | /bin/bash | bash-x.xx$ | bash-x.xx# |