Ich habe gerade angefangen, Cmder unter Windows 7 zu verwenden, und ich verstehe, dass es sich dabei um einen Konsolenemulator für Windows handelt, der ein besseres Erlebnis bietet als die Verwendung von cmd. Soweit ich weiß, muss der Emulator jedoch eine Shell ausführen, um die Benutzerbefehle an das Betriebssystem zu übermitteln. Was ist also unter Windows die Shell? Ist CMD die Standard-Shell für Windows?
Ich würde es begrüßen, einfach zu verstehen, wie diese Tools verbunden sind.
Antwort1
Windows verfügt über zwei integrierte Befehlszeilen-Shells: Cmd.exe und PowerShell 5. (Die Windows-Benutzeroberfläche ist in gewisser Hinsicht tatsächlich eine „Shell“, aber sie ist keineBefehlShell und auf die Frage nicht anwendbar.)
Cmder verwendet standardmäßig Cmd.exe, aberschwerpasst es an – die tatsächliche interaktive Eingabeaufforderung, die Sie sehen, ist keine normale Cmd.exe-Eingabeaufforderung; sie wird von ConEmu angezeigt, clink
das in den Cmd-Prozess eingefügt wird. (Das gesamte "Cmder"-Fenster ist eigentlichConEmu.)
Technisch gesehen werden alle Ihre Befehle also weiterhin über Cmd ausgeführt, es ist jedoch die eingefügte Clink-Bibliothek, die erweiterte Funktionen wie die Tab-Vervollständigung und Readline-ähnliche Tastenkombinationen bereitstellt.
Aber neben Cmd.exe ist es möglich,jede andere Shellin Cmder, wie etwa PowerShell oder Bash (das nicht Teil von Windows ist, aber zum Standard bei Linux gehört und oft auch zusammen mit Git für Windows installiert wird).
So wie ich es verstehe, muss der Emulator jedoch eine Shell ausführen, um die Benutzerbefehle an das Betriebssystem zu übermitteln
In gewissem Sinne ja, obwohl Shells nicht notwendig sind, um Befehle einfach nur „auszuführen“ (jeder Prozess kann jederzeit eine beliebige .exe-Datei starten; so erstellt man überhaupt erst eine Shell); vielmehr ist ihre AufgabeinterpretierenBefehle – sie bieten Dinge wie if/for/while-Schleifen, %variable%-Erweiterung usw. Abgesehen davon haben sie jedoch keinen speziellen Zugriff auf Betriebssystemfunktionen, den andere Programme nicht hätten. 1
(Theoretisch also ein Terminalkönnteeigene Eingabeaufforderungen anzeigen und eine eigene Befehlssprache implementieren, dies wird nur selten gemacht, da die meisten Leute z. B. an die Bash-Syntax gewöhnt sind.)
1 (Dies gilt für Windows und alle Unix-ähnlichen Systeme, aber nicht unbedingt füralleBetriebssysteme. Beispielsweise ist die DCL-Befehlsshell in OpenVMS tatsächlich privilegierter als normale Programme, wie es damals bei vielen Betriebssystemen der Fall war – wahrscheinlich war es Unix, das mit der Tradition brach, da seine Shell ein völlig normales und austauschbares Tool war.)