GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Der Unterschied zwischen einem eingebauten Befehl und einem, der es nicht ist?

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.

Verwandt:Einige der Befehle davon ausschließen, im Bash-Verlauf gespeichert zu werden?
Linux
  1. Unterschied zwischen Login-Shell und Nicht-Login-Shell?

  2. Der Unterschied in der Verwendung zwischen Shell-Variablen und Umgebungsvariablen?

  3. Was ist der Unterschied zwischen Sudo Su – und Sudo Su –?

  4. Linux – Was ist der Unterschied zwischen `su -` und `su –login`?

  5. Der Unterschied zwischen Nss und Pam?

Der Unterschied zwischen mehr, weniger und den meisten Befehlen

Was ist der Unterschied zwischen Cat und Touch Command?

Was ist der Unterschied zwischen Login- und Non-Login-Shell

Was ist der Unterschied zwischen apt und dem Befehl apt-get?

Was ist der Unterschied zwischen Kill- und Killall-Befehlen?

Was ist der Unterschied zwischen einer Konsole, einem Terminal und einer Shell?