Shell (Computer) - Shell (computing)

Eine grafische Oberfläche aus den späten 1980er Jahren, die ein TUI- Fenster für eine Manpage , ein geformtes Fenster (Uhr) sowie mehrere ikonifizierte Fenster bietet . Unten rechts sehen wir einen Terminal-Emulator , auf dem eine Unix-Shell läuft , in dem der Benutzer Befehle eingeben kann, als säße er an einem Terminal .

In der Computertechnik ist eine Shell ein Computerprogramm, das die Dienste eines Betriebssystems einem menschlichen Benutzer oder einem anderen Programm zur Verfügung stellt. Im Allgemeinen verwenden Betriebssystem-Shells entweder eine Befehlszeilenschnittstelle (CLI) oder eine grafische Benutzerschnittstelle (GUI), abhängig von der Rolle des Computers und der speziellen Operation. Sie wird als Shell bezeichnet, weil sie die äußerste Schicht um das Betriebssystem herum ist.

Befehlszeilenschalen muss den Benutzer mit Kommandos und dessen Aufruf vertraut zu sein Syntax und Konzepte über die Shell-spezifische Skriptsprache (zum Beispiel zu verstehen , bash ).

Grafische Shells stellen für Computeranfänger eine geringe Belastung dar und zeichnen sich dadurch aus, dass sie einfach zu verwenden sind. Da sie auch gewisse Nachteile mit sich bringen, bieten die meisten GUI-fähigen Betriebssysteme auch CLI-Shells.

Überblick

Betriebssysteme bieten ihren Benutzern verschiedene Dienste, einschließlich Dateiverwaltung , Prozessverwaltung (Ausführen und Beenden von Anwendungen ), Stapelverarbeitung und Überwachung und Konfiguration des Betriebssystems.

Die meisten Betriebssystem-Shells sind keine direkten Schnittstellen zum zugrunde liegenden Kernel, selbst wenn eine Shell mit dem Benutzer über direkt an den Computer angeschlossene Peripheriegeräte kommuniziert . Shells sind eigentlich spezielle Anwendungen, die die Kernel- API genauso verwenden, wie sie von anderen Anwendungsprogrammen verwendet wird. Eine Shell verwaltet die Interaktion zwischen Benutzer und System, indem sie Benutzer zur Eingabe auffordert, ihre Eingabe interpretiert und dann eine Ausgabe des zugrunde liegenden Betriebssystems verarbeitet (ähnlich wie eine Read-Eval-Print-Schleife, REPL ). Da die Betriebssystem-Shell eigentlich eine Anwendung ist, kann sie für die meisten Betriebssysteme leicht durch eine andere ähnliche Anwendung ersetzt werden.

Neben Shells, die auf lokalen Systemen ausgeführt werden, gibt es verschiedene Möglichkeiten, Remote-Systeme lokalen Benutzern zur Verfügung zu stellen. solche Ansätze werden üblicherweise als Fernzugriff oder Fernverwaltung bezeichnet. Ursprünglich auf Multi-User- Mainframes verfügbar , die textbasierte UIs für jeden aktiven Benutzer gleichzeitig über ein Textterminal bereitstellten , das über eine serielle Leitung oder ein Modem mit dem Mainframe verbunden war , hat sich der Fernzugriff auf Unix-ähnliche Systeme und Microsoft Windows ausgeweitet . Auf Unix-ähnlichen Systemen wird das Secure Shell-Protokoll normalerweise für textbasierte Shells verwendet, während SSH-Tunneling für X Window System-basierte grafische Benutzeroberflächen (GUIs) verwendet werden kann. Unter Microsoft Windows kann Remote Desktop Protocol verwendet werden, um GUI-Remotezugriff bereitzustellen, und seit Windows Vista kann PowerShell Remote für textbasierten Remotezugriff über WMI, RPC und WS-Management verwendet werden.

Die meisten Betriebssystem-Shells fallen in eine von zwei Kategorien – Befehlszeile und Grafik. Befehlszeilen-Shells stellen dem Betriebssystem eine Befehlszeilenschnittstelle (CLI) zur Verfügung, während grafische Shells eine grafische Benutzeroberfläche (GUI) bereitstellen. Andere Möglichkeiten, obwohl nicht so üblich, umfassen eine Sprachbenutzerschnittstelle und verschiedene Implementierungen einer textbasierten Benutzerschnittstelle (TUI), die keine CLI sind. Die relativen Vorzüge von CLI- und GUI-basierten Shells werden oft diskutiert.

Befehlszeilen-Shells

Eingabeaufforderung , eine CLI-Shell in Windows
Bash , eine weit verbreitete Unix-Shell

Eine Befehlszeilenschnittstelle (CLI) ist eine Betriebssystem-Shell, die alphanumerische Zeichen verwendet, die auf einer Tastatur eingegeben werden, um dem Betriebssystem interaktiv Anweisungen und Daten bereitzustellen. Beispielsweise kann ein Fernschreiber Codes, die Tastenanschläge darstellen, an ein Befehlsinterpreterprogramm senden, das auf dem Computer läuft; der Befehlsinterpreter analysiert die Tastenfolge und antwortet mit einer Fehlermeldung, wenn er die Zeichenfolge nicht erkennen kann, oder er kann andere Programmaktionen ausführen, wie zum Beispiel 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, Syntax und Fähigkeiten, wobei die POSIX-Shell die Basis bildet. Einige Betriebssysteme hatten nur eine einzige Art von Befehlsschnittstelle; Standardbetriebssysteme wie MS-DOS wurden mit einer Standardbefehlsschnittstelle ( COMMAND.COM ) geliefert, aber häufig waren auch Schnittstellen von Drittanbietern verfügbar, die zusätzliche Merkmale oder Funktionen wie Menüführung oder Remote-Programmausführung bereitstellten.

Anwendungsprogramme können auch eine Befehlszeilenschnittstelle implementieren. In Unix-ähnlichen Systemen hat das telnet- Programm beispielsweise eine Reihe von Befehlen zum Steuern einer Verbindung zu einem entfernten Computersystem. Da die Befehle an das Programm aus denselben Tastenanschlägen bestehen wie die Daten, die an einen entfernten Computer gesendet werden, sind einige Mittel zur Unterscheidung der beiden erforderlich. Eine Escape-Sequenz kann definiert werden, indem entweder ein spezieller lokaler Tastenanschlag verwendet wird, der nie weitergegeben wird, sondern immer vom lokalen System interpretiert wird. Das Programm wird modal, wechselt zwischen der Interpretation von Befehlen über die Tastatur oder der Übergabe von Tastenanschlägen als zu verarbeitende Daten.

Ein Merkmal vieler Befehlszeilen-Shells ist die Möglichkeit, Befehlsfolgen zur Wiederverwendung zu speichern. Eine Datendatei kann Befehlsfolgen enthalten, denen die CLI so folgen kann, als ob sie von einem Benutzer eingegeben würde. Bei der Ausführung dieser gespeicherten Anweisungen können Besonderheiten in der CLI zutreffen. Solche Batch-Dateien (Script-Dateien) können wiederholt verwendet werden, um Routinevorgänge wie das Initialisieren einer Reihe von Programmen beim Neustart eines Systems zu automatisieren. Die Verwendung von Shells im Batch-Modus umfasst normalerweise Strukturen, Bedingungen, Variablen und andere Elemente von Programmiersprachen; einige verfügen über das nötigste Nötigste für einen solchen Zweck, andere sind an sich schon sehr ausgefeilte Programmiersprachen. Umgekehrt können einige Programmiersprachen interaktiv von einer Betriebssystem-Shell oder in einem speziell entwickelten Programm verwendet werden.

Die Befehlszeilen-Shell kann Funktionen wie die Befehlszeilenvervollständigung bieten , bei der der Interpreter Befehle basierend auf einigen wenigen Zeichen erweitert, die vom Benutzer eingegeben werden. Ein Befehlszeilen-Interpreter kann eine Verlaufsfunktion bieten, so dass der Benutzer frühere an das System ausgegebene Befehle abrufen und sie möglicherweise mit einer gewissen Bearbeitung wiederholen kann. Da alle Befehle an das Betriebssystem vom Benutzer eingetippt werden mussten, waren kurze Befehlsnamen und kompakte Systeme zur Darstellung von Programmoptionen üblich. Kurze Namen waren für einen Benutzer manchmal schwer zu merken, und frühen Systemen fehlten die Speicherressourcen, um eine detaillierte Online-Benutzeranleitung bereitzustellen.

Grafische Muscheln

Eine grafische Benutzeroberfläche (GUI) stellt Mittel zum grafischen Manipulieren von Programmen bereit, indem sie Operationen wie Öffnen, Schließen, Verschieben und Größenänderung von Fenstern sowie das Umschalten des Fokus zwischen Fenstern ermöglicht. Grafische Shells können in Desktop-Umgebungen enthalten sein oder separat geliefert werden, sogar als Satz lose gekoppelter Dienstprogramme.

Die meisten grafischen Benutzerschnittstellen entwickeln die Metapher eines "elektronischen Desktops" , bei dem Datendateien so dargestellt werden, als ob sie Papierdokumente auf einem Schreibtisch wären, und Anwendungsprogramme haben in ähnlicher Weise grafische Darstellungen, anstatt durch Befehlsnamen aufgerufen zu werden.

Unix-ähnliche Systeme

Drag-and-Drop- Vorgang für eine Gruppe von Dateien zwischen KDesktop und Konqueror in KDE

Grafische Shells bauen normalerweise auf einem Fenstersystem auf . Im Falle von X Window System oder Wayland besteht die Shell aus einem X Window Manager bzw. einem Wayland Compositor sowie aus einem oder mehreren Programmen, die die Funktionalität zum Starten installierter Anwendungen, zum Verwalten geöffneter Fenster und virtueller Desktops bereitstellen, und oft, um eine Widget-Engine zu unterstützen.

Im Fall von macOS , Quarz könnte als das Windowing - System gedacht werden, und die Schale besteht aus dem Finder , das Dock , SystemUIServer und Mission Control .

Microsoft Windows

Moderne Versionen des Microsoft Windows- Betriebssystems verwenden die Windows-Shell als Shell. Windows Shell bietet Desktop-Umgebung , Startmenü und Taskleiste sowie eine grafische Benutzeroberfläche für den Zugriff auf die Dateiverwaltungsfunktionen des Betriebssystems. Ältere Versionen enthalten auch Program Manager , die Shell für die 3.x-Reihe von Microsoft Windows, und die tatsächlich mit späteren Versionen von Windows sowohl vom 95er als auch vom NT-Typ geliefert wurde, zumindest bis Windows XP. Die Oberflächen der Windows-Versionen 1 und 2 waren deutlich unterschiedlich.

Desktopanwendungen werden auch als Shells betrachtet, solange sie eine Drittanbieter-Engine verwenden. Ebenso haben viele Einzelpersonen und Entwickler, die mit der Benutzeroberfläche von Windows Explorer unzufrieden sind, Software entwickelt, die entweder die Funktionsweise und das Erscheinungsbild der Shell verändert oder sie vollständig ersetzt. WindowBlinds von StarDock ist ein gutes Beispiel für die erstgenannte Art von Anwendung. LiteStep und Emerge Desktop sind gute Beispiele für letzteres.

Interoperabilitätsprogramme und speziell entwickelte Software ermöglichen es Windows-Benutzern, Äquivalente vieler der verschiedenen unten diskutierten Unix-basierten GUIs sowie Macintosh zu verwenden. Ein Äquivalent des OS/2 Presentation Manager für Version 3.0 kann einige OS/2-Programme unter bestimmten Bedingungen ausführen, die das OS/2- Umgebungssubsystem in Versionen von Windows NT verwenden.

Andere Verwendungen

"Shell" wird auch lose verwendet, um Anwendungssoftware zu beschreiben, die um eine bestimmte Komponente herum "gebaut" ist, wie Webbrowser und E-Mail-Clients, in Analogie zu den in der Natur vorkommenden Shells. Tatsächlich kapselt die (Befehlszeilen-)Shell den Kernel des Betriebssystems . Diese werden manchmal auch als "Wrapper" bezeichnet.

In Expertensystemen ist eine Shell ein Stück Software, das ein "leeres" Expertensystem ohne die Wissensbasis für eine bestimmte Anwendung ist.

Siehe auch

Verweise