Gibt es einen wesentlichen Unterschied zwischen einem eingebauten Befehl und einem anderen Befehl, der nominell dasselbe tun kann?
z.B. Werden Einbauten „besonders“ behandelt? … gibt es weniger Overhead, um sie zu betreiben? .. oder sind sie einfach nur „eingebaut“; wie das Armaturenbrett Ihres Autos?
…und gibt es eine endgültige (aktuelle) Liste dieser Builtins?
Akzeptierte Antwort:
Aus Ihren Kommentaren geht hervor, dass Sie verwirrt darüber sind, was genau eine Hülle ist ist. Der Kernel ist für die Verwaltung des Systems verantwortlich. Es ist der Teil, der tatsächlich Programme lädt und ausführt, auf Dateien zugreift, Speicher zuweist usw. Aber der Kernel hat keine Benutzeroberfläche; Sie können nur mit ihm kommunizieren, indem Sie ein anderes Programm als Vermittler verwenden.
Eine Shell ist ein Programm, das eine Eingabeaufforderung ausgibt, eine Eingabezeile von Ihnen liest und sie dann als einen oder mehrere Befehle interpretiert, um Dateien zu manipulieren oder andere Programme auszuführen. Vor der Erfindung der GUI war die Shell die primäre Benutzeroberfläche eines Betriebssystems. Unter MS-DOS hieß die Shell command.com
und nur wenige Leute haben jemals versucht, einen anderen zu verwenden. Unter Unix gibt es jedoch seit langem mehrere Shells, aus denen Benutzer auswählen können.
Sie können in 3 Arten 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 eine von einer Programmiersprache ausleihen 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, weil das Laden und Ausführen eines Programms einige Zeit in Anspruch nimmt. Je länger die Ausführung des Befehls dauert, desto weniger bedeutsam ist natürlich die Ladezeit im Vergleich zur Gesamtlaufzeit (weil die Ladezeit ziemlich konstant ist).
Zweitens kann ein eingebauter Befehl den internen Zustand der Shell beeinflussen. Deshalb sind Befehle wie cd
muss eingebaut sein, da ein externes Programm das aktuelle Verzeichnis der Shell nicht ändern kann. Andere Befehle, wie echo
, sind möglicherweise aus Effizienzgründen integriert, aber es gibt keinen eigentlichen Grund, warum sie keine externen Befehle sein können.
Welche Befehle integriert sind, hängt von der verwendeten Shell ab. Sie müssen die Dokumentation für eine Liste konsultieren (z. B. bash
Die eingebauten Befehle sind in Kapitel 4 des Handbuchs aufgeführt). Der type
command kann Ihnen mitteilen, ob ein Befehl eingebaut ist (wenn Ihre Shell POSIX-kompatibel ist), da POSIX diesen type
erfordert eingebaut sein. Wenn which
nicht in Ihre Shell integriert ist, dann weiß es wahrscheinlich nichts über die integrierten Funktionen Ihrer Shell, sondern sucht nur nach externen Programmen.