Aus Ihren Kommentaren geht hervor, dass Sie verwirrt darüber sind, was genau eine Shell ist. Der Kernel ist für die Verwaltung des Systems verantwortlich. Es ist der Teil, der Programme lädt und ausführt, auf Dateien zugreift, Speicher zuweist usw. Aber der Kernel hat keine Benutzeroberfläche; Sie können nur mit einem anderen Programm als Vermittler kommunizieren.
Eine Shell ist ein Programm, das eine Eingabeaufforderung ausgibt, eine Eingabezeile liest und sie dann als einen oder mehrere Befehle zum Bearbeiten von Dateien oder zum Ausführen anderer Programme interpretiert. Vor der Erfindung der grafischen Benutzeroberfläche war die Shell die primäre Benutzeroberfläche eines Betriebssystems. Unter MS-DOS wurde die Shell aufgerufen, command.com
und nur wenige Benutzer haben jemals versucht, eine andere zu verwenden. Unter Unix gab es jedoch schon lange mehrere Shells , aus denen Benutzer auswählen konnten.
Sie können in 3 Typen unterteilt werden. Die Bourne-kompatiblen Shells verwenden die von der ursprünglichen Bourne-Shell abgeleitete Syntax . C-Shells verwenden die Syntax der ursprünglichen C-Shell . Dann gibt es nicht-traditionelle Shells, die ihre eigene Syntax erfinden oder sich eine aus einer Programmiersprache leihen und im Allgemeinen viel weniger beliebt sind als die ersten beiden Typen.
Ein eingebauter Befehl ist einfach ein Befehl, den die Shell selbst ausführt, anstatt ihn als Aufforderung zum Laden und Ausführen eines anderen Programms zu interpretieren. Dies hat zwei Haupteffekte. Erstens ist es normalerweise schneller, da das Laden und Ausführen eines Programms einige Zeit in Anspruch nimmt. Je länger die Ausführung des Befehls dauert, desto weniger signifikant ist die Ladezeit im Vergleich zur Gesamtlaufzeit (da die Ladezeit ziemlich konstant ist).
Zweitens kann ein eingebauter Befehl den internen Zustand der Shell beeinflussen. Deshalb cd
müssen Befehle wie eingebaut sein, da ein externes Programm das aktuelle Verzeichnis der Shell nicht ändern kann. Andere Befehle, wie z. B. echo
, sind möglicherweise aus Effizienzgründen eingebaut, aber es gibt keinen eigentlichen Grund, warum es sich nicht um externe Befehle handeln kann.
Welche Befehle integriert sind, hängt von der verwendeten Shell ab. In der Dokumentation finden Sie eine Liste (die bash
integrierten Befehle finden Sie in Kapitel 4 des Handbuchs ). Der type
Befehl kann Ihnen mitteilen, ob ein Befehl eingebaut ist (wenn Ihre Shell POSIX-kompatibel ist), da POSIX type
dies als eingebaut voraussetzt. Wenn which
in Ihrer Shell keine integrierte Komponente vorhanden ist, werden die integrierten Komponenten Ihrer Shell wahrscheinlich nicht erkannt, sondern es wird nur nach externen Programmen gesucht.