
Eine Betriebssystem- Shell ist ein Computerprogramm , das einen relativ umfassenden und direkten Zugriff auf das System ermöglicht, auf dem es ausgeführt wird. Der Begriff „Shell“ bezieht sich darauf, dass sie eine relativ dünne Schicht um ein Betriebssystem herum bildet. [ 1 ] [ 2 ]
Die meisten Shells sind Kommandozeilenprogramme (CLI). Einige grafische Benutzeroberflächen (GUIs) beinhalten ebenfalls Shells.
Überblick
Betriebssysteme bieten ihren Benutzern verschiedene Dienste an, darunter Dateiverwaltung , Prozessverwaltung (Ausführen und Beenden von Anwendungen ), Stapelverarbeitung sowie Überwachung und Konfiguration des Betriebssystems.
Die meisten Betriebssystem-Shells sind keine direkten Schnittstellen zum zugrundeliegenden Kernel , selbst wenn eine Shell über direkt an den Computer angeschlossene Peripheriegeräte mit dem Benutzer kommuniziert. Shells sind eigentlich spezielle Anwendungen, die die Kernel- API auf dieselbe Weise nutzen wie andere Anwendungsprogramme. Eine Shell steuert die Benutzer-System-Interaktion, indem sie Benutzer zur Eingabe auffordert, diese interpretiert und anschließend die Ausgabe des Betriebssystems verarbeitet (ähnlich einer Lese-/Auswertungs-/Ausgabeschleife, REPL ). [ 3 ] Da die Betriebssystem-Shell eine Anwendung ist, kann sie bei den meisten Betriebssystemen problemlos durch eine andere, ähnliche Anwendung ersetzt werden.
In addition to shells running on local systems, there are different ways to make remote systems available to local users; such approaches are usually referred to as remote access or remote administration. Initially available on multi-usermainframes, which provided text-based UIs for each active user simultaneously by means of a text terminal connected to the mainframe via serial line or modem, remote access has extended to Unix-like systems and Microsoft Windows. On Unix-like systems, Secure Shell protocol (SSH) is usually used for text-based shells, while SSH tunneling can be used for X Window System–based graphical user interfaces (GUIs). On Microsoft Windows, Remote Desktop Protocol can be used to provide GUI remote access, since Windows Vista, PowerShell Remote, since Windows 10 build 1809 SSH[4] can also be used for text-based remote access via WMI, RPC, and WS-Management.[5]
Most operating system shells fall into one of two categories – command-line and graphical. Command-line shells provide a command-line interface (CLI) to the operating system, while graphical shells provide a graphical user interface (GUI). Other possibilities, although not so common, include a voice user interface and various implementations of a text-based user interface (TUI) that are not CLI, such as text-based menu systems. The relative merits of CLI- and GUI-based shells are often debated. Many computer users use both depending on the task to be performed.
History
Early interactive systems provided a simple command-line interpreter as part of the resident monitor. This interpreter might be called by different names, such as COMCON on DEC TOPS-10 systems.[6] The interpreter would execute one of a number of predefined commands, one of which would be to run a user program. Common commands would log the user on and off the system, allocate, free, and manipulate devices and files, and query various pieces of information about the system or a user process.[7]
The purpose of such a procedure is to create a medium of exchange into which one could activate any procedure, as if it were called from the inside of another program. Hereafter, for simplification, we shall refer to that procedure as the "SHELL".
1964 entwickelte Louis Pouzin für das Betriebssystem Multics die Idee, „Befehle gewissermaßen wie eine Programmiersprache zu verwenden“ und prägte den Begriff „ Shell“ zu dessen Beschreibung. [ 9 ] In einem Dokument von 1965 wird die Shell definiert als „eine gemeinsame Prozedur, die vom Supervisor automatisch aufgerufen wird, sobald ein Benutzer eine Nachricht an seiner Konsole eingibt, solange kein anderer Prozess unter Konsolensteuerung aktiv ausgeführt wird. Diese Prozedur dient als Schnittstelle zwischen Konsolennachrichten und Unterprogrammen [im Supervisor].“ [ 8 ] Dieses System wurde erstmals von Glenda Schroeder und einem ungenannten Mitarbeiter von General Electric implementiert . [ 9 ]
Multics führte auch die aktive Funktion ein , ein Schlüsselkonzept in einigen späteren Shells. Diese ist definiert als
eine Zeichenkette, die vor der Ausführung der sie enthaltenden Befehlszeile durch einen Zeichenketten-Rückgabewert ersetzt wird. Aktive Funktionen werden häufig verwendet, um Befehlssprachenmakros zu implementieren. [ 10 ]
1971 entwickelte Ken Thompson die Thompson-Shell in der ersten Version von Unix. Obwohl sie einfacher als die Multics-Shell war, enthielt sie einige innovative Merkmale, die in modernen Shells weitergeführt wurden, darunter die Verwendung von < und > zur Ein- und Ausgabeumleitung .
Die grafische Benutzeroberfläche erschien erstmals in Douglas Engelbarts NLS - System, das im Dezember 1968 auf der Fall Joint Computer Conference in San Francisco vorgestellt wurde – eine Demonstration, die als „Mutter aller Demos“ in die Geschichte einging . Engelbarts Kollegen am Stanford Research Institute brachten das Konzept zum Xerox Palo Alto Research Center (PARC), wo es auf dem 1973 eingeführten Alto zum Einsatz kam . Von dort verbreitete sich die Idee weiter, beispielsweise auf Niklaus Wirths Lilith im Jahr 1980 und auf dem Apple Lisa im Jahr 1983, und wurde schließlich allgegenwärtig.
Kommandozeilen-Shells


Eine Kommandozeilenschnittstelle (CLI) ist eine Betriebssystem-Shell, die alphanumerische Zeichen über die Tastatur nutzt, um interaktiv Anweisungen und Daten an das Betriebssystem zu übermitteln. Beispielsweise kann ein Fernschreiber Tastendrücke an ein auf dem Computer laufendes Kommandozeilenprogramm senden. Dieses Programm analysiert die Tastenfolge und gibt eine Fehlermeldung aus, wenn es die Zeichen nicht erkennt. Alternativ kann es andere Programmaktionen ausführen, wie das Laden eines Anwendungsprogramms, das Auflisten von Dateien, das Anmelden eines Benutzers und vieles mehr. Betriebssysteme wie UNIX verfügen über eine Vielzahl von Shell -Programmen mit unterschiedlichen Befehlen, Syntaxen und Funktionen, wobei die POSIX-Shell als Basis dient. Einige Betriebssysteme boten nur eine einzige Art von Kommandozeilenschnittstelle. Gängige Betriebssysteme wie MS-DOS wurden mit einer Standard-Kommandozeilenschnittstelle ( COMMAND.COM ) ausgeliefert, jedoch waren häufig auch Schnittstellen von Drittanbietern verfügbar, die zusätzliche Funktionen wie Menüs oder die Ausführung von Programmen aus der Ferne ermöglichten.
Anwendungsprogramme können auch eine Kommandozeilenschnittstelle implementieren. Beispielsweise verfügt das Telnet- Programm in Unix-ähnlichen Systemen über eine Reihe von Befehlen zur Steuerung einer Verbindung zu einem entfernten Computersystem. Da die Befehle an das Programm aus denselben Tastenanschlägen bestehen wie die an den entfernten Computer gesendeten Daten, ist eine Möglichkeit zur Unterscheidung beider erforderlich. Hierfür kann eine Escape-Sequenz definiert werden, die entweder einen speziellen lokalen Tastendruck verwendet, der niemals weitergeleitet, sondern immer vom lokalen System interpretiert wird, oder das Programm modal arbeitet und zwischen der Interpretation von Tastaturbefehlen und der Weiterleitung von Tastenanschlägen als zu verarbeitende Daten umschaltet.
Viele Kommandozeilen-Shells bieten die Möglichkeit, Befehlsfolgen zur Wiederverwendung zu speichern. Eine Datendatei kann solche Befehlsfolgen enthalten, die die Kommandozeilen-Shell (CLI) ausführt, als ob sie vom Benutzer eingegeben worden wäre. Bei der Ausführung dieser gespeicherten Anweisungen können spezielle Funktionen der CLI zum Einsatz kommen. Solche Batch-Dateien (Skriptdateien) lassen sich wiederholt verwenden, um Routinevorgänge zu automatisieren, beispielsweise die Initialisierung einer Reihe von Programmen beim Neustart eines Systems. Die Verwendung von Shells im Batch-Modus beinhaltet üblicherweise Strukturen, Bedingungen, Variablen und andere Elemente von Programmiersprachen. Einige Shells bieten die dafür notwendigen Grundlagen, andere sind eigenständige, sehr komplexe Programmiersprachen. Umgekehrt lassen sich manche Programmiersprachen interaktiv über die Betriebssystem-Shell oder in einem speziell dafür entwickelten Programm verwenden.
Mehrere Kommandozeilen-Shells, wie Nushell, Xonsh, Bash (Unix-Shell) und Z-Shell , bieten eine Befehlszeilenvervollständigung , die es dem Interpreter ermöglicht, Befehle anhand weniger vom Benutzer eingegebener Zeichen zu erweitern. [ 11 ]
Ein Kommandozeileninterpreter bot oft eine Befehlshistorie, mit der der Benutzer zuvor an das System gesendete Befehle abrufen und gegebenenfalls bearbeiten und wiederholen konnte. Da alle Befehle an das Betriebssystem vom Benutzer eingegeben werden mussten, waren kurze Befehlsnamen und kompakte Systeme zur Darstellung von Programmoptionen üblich. Kurze Namen waren für Benutzer mitunter schwer zu merken, und frühen Systemen fehlten die Speicherkapazitäten für eine ausführliche Online-Benutzeranleitung.
Grafische Oberflächen
Eine grafische Benutzeroberfläche (GUI) ermöglicht die grafische Steuerung von Programmen durch Operationen wie das Öffnen, Schließen, Verschieben und Ändern der Fenstergröße sowie das Wechseln des Fokus zwischen Fenstern. Grafische Oberflächen können in Desktop-Umgebungen integriert sein oder separat, auch als Sammlung lose gekoppelter Hilfsprogramme, bereitgestellt werden.
Die meisten grafischen Benutzeroberflächen entwickeln die Metapher eines „elektronischen Desktops“ , auf dem Datendateien so dargestellt werden, als wären es Papierdokumente auf einem Schreibtisch, und Anwendungsprogramme haben in ähnlicher Weise grafische Darstellungen, anstatt über Befehlsnamen aufgerufen zu werden.
Unix-ähnliche Systeme

Grafische Oberflächen basieren typischerweise auf einem Fenstersystem . Im Fall des X Window Systems (XWS) bzw. Wayland besteht die Oberfläche aus einem X-Window-Manager bzw. einem Wayland-Compositor sowie einem oder mehreren Programmen, die das Starten installierter Anwendungen, die Verwaltung geöffneter Fenster und virtueller Desktops und häufig auch die Unterstützung einer Widget-Engine ermöglichen. GNOME Shell und KDE Plasma sind grafische Oberflächen für das XWS bzw. Wayland.
Im Falle von macOS fungiert Quartz Compositor als Fenstersystem, und die Shell besteht aus dem Finder , [ 12 ] dem Dock , [ 12 ] SystemUIServer, [ 12 ] und Mission Control . [ 13 ]
Microsoft Windows
Modern versions of the Microsoft Windows operating system use the Windows shell as their shell. Windows Shell provides desktop environment, start menu, and task bar, as well as a graphical user interface for accessing the file management functions of the operating system. Older versions also include Program Manager, which was the shell for the 3.x series of Microsoft Windows, and which in fact shipped with later versions of Windows of both the 95 and NT types at least through Windows XP. The interfaces of Windows versions 1 and 2 were markedly different.
Desktop applications are also considered shells, as long as they use a third-party engine. Likewise, many individuals and developers dissatisfied with the interface of Windows Explorer have developed software that either alters the functioning and appearance of the shell or replaces it entirely. WindowBlinds by StarDock is a good example of the former sort of application. LiteStep and Emerge Desktop are good examples of the latter.
Interoperability programmes and purpose-designed software lets Windows users use equivalents of many of the various Unix-based GUIs discussed below, as well as Macintosh. An equivalent of the OS/2 Presentation Manager for version 3.0 can run some OS/2 programmes under some conditions using the OS/2 environmental subsystem in versions of Windows NT.
Invocation from a program
A shell can usually also be invoked from within a program through standard system functions like system(), popen() and exec() without any user interface being involved.
Beyond these standard functions, Windows for example provides the "Windows Shell API" which exposes a set of functions that programs can use to interact with the Windows shell. These shell functions are provided in DLL's (like shell32.dll and shlwapi.dll) and do not need the default Windows shell GUI i.e. explorer.exe to be running. Explorer.exe and its replacements generally make use of the Windows Shell API to provide users with a Windows shell GUI without having to implement themselves the Windows shell core functionalities (which are implemented and provided by shell32.dll and shlwapi.dll). But programs can use the Windows Shell API for other purposes and without providing users with a shell user interface.
Other uses
"Shell" is also used loosely to describe application software that is "built around" a particular component, such as web browsers and email clients, in analogy to the shells found in nature. Indeed, the (command-line) shell encapsulates the operating system kernel. These are also sometimes referred to as "wrappers".[2]
In Expertensystemen ist eine Shell ein Softwarebaustein, der ein „leeres“ Expertensystem ohne Wissensbasis für eine bestimmte Anwendung darstellt. [ 14 ]
Siehe auch
- Vergleich von Befehlsshells
- Mensch-Computer-Interaktion
- Internet Explorer Shell – Programme, die auf der Internet Explorer-Browser-Engine basieren.
- Shell-Konto – Benutzerkonto auf einem Remote-Server
- Shell integriert – Computerfunktion
- Superuser – Spezielles Benutzerkonto für die Systemadministration
- Unix-Shell – Befehlszeileninterpreter für das Unix-Betriebssystem
- Fenstermanager – Art von Systemsoftware
- Read-Eval-Print-Schleife – Computerprogrammierumgebung
Referenzen
- ^ „Der fünfte Mann des Internets“ , Gehirnscan, The Economist , London: Economist Group , 13. Dezember 2013.
Herr Pouzin entwickelte ein Programm namens RUNCOM, das Nutzern half, mühsame und sich wiederholende Befehle zu automatisieren. Dieses Programm, das er als „Hülle“ um die surrenden inneren Komponenten des Computers beschrieb, inspirierte – und gab – einer ganzen Klasse von Software-Tools, den sogenannten Kommandozeilen-Shells, die noch immer unter der Oberfläche moderner Betriebssysteme verborgen sind, ihre Inspiration und ihren Namen.
- ^ a b Raymond, Eric S. (Hrsg.). "shell" . The Jargon File .
- ^ „Betriebssystem-Shells“ . AIX 6.1 Information Center . IBM Corp. Abgerufen am 16. September 2012 .
- ^ teocci. „Wie kann man sich per SSH in Windows 10 oder 11 einloggen?“ . GitHub Gist . Abgerufen am 24.01.2025 .
- ^ Wheeler, Sean (14. Oktober 2018). „Ausführen von Remote-Befehlen“ . Microsoft Docs . Microsoft . Abgerufen am 30. Juni 2019.
Mit einem einzigen PowerShell-Befehl können Sie Befehle auf einem oder Hunderten von Computern ausführen. Windows PowerShell unterstützt Remote-Computing mithilfe verschiedener Technologien, darunter WMI, RPC und WS-Management.
- ^ Digital Equipment Corporation (Nov. 1980). TOPS-10 MONITOR INTERNALS (PDF) . S. CMND-1 – CMND-16 . Abgerufen am 29. März 2022 .
- ^ Digital Equipment Corporation (Aug. 1977). DECSystem 10 Betriebssystem-Befehlshandbuch (PDF) . Abgerufen am 29. März 2022 .
- ^ a b Poizin, Louis. "The SHELL: A Global Tool for Calling and Chaining Procedures in the System" (PDF) .
- ^ a b Pouzin, Louis. „The Origin of the Shell“ . multicians.org . Abgerufen am 29. März 2022 .
- ^ Multics Common Commands (PDF) . Honeywell Inc. Februar 1983. S. 1-1 – 1-2 . GB58-00 . Abgerufen am 30. Dezember 2025 .
- ^ Offizielle Website von Xonsh
- ^ a b c „Der Lebenszyklus eines Dämons“ . Apple Inc.
- ^ „Mission Control in OS X Lion neu starten“ . OSXDaily. 23. November 2011.
- ^ British Computer Society: Das BCS-Glossar der IKT- und Informatikbegriffe . Pearson Education. 2005. S. 135. ISBN 978-0-13-147957-9Die
