GNU/Linux >> Linux Esercitazione >  >> Linux

La differenza tra un comando integrato e uno che non lo è?

C'è qualche differenza intrinseca tra un comando integrato e un altro comando che può nominalmente fare la stessa cosa?

per esempio. I builtin ottengono un trattamento "speciale"? ... c'è meno sovraccarico che li esegue? .. o sono semplicemente "integrati"; come il cruscotto della tua auto?

... ed esiste un elenco (attuale) definitivo di questi incorporati?

Risposta accettata:

Dai tuoi commenti, sembri essere confuso su cosa sia esattamente una shell è. Il kernel è responsabile della gestione del sistema. È la parte che effettivamente carica ed esegue programmi, accede ai file, alloca memoria, ecc. Ma il kernel non ha un'interfaccia utente; puoi comunicare con esso solo utilizzando un altro programma come intermediario.

Una shell è un programma che stampa un prompt, legge una riga di input da te e quindi lo interpreta come uno o più comandi per manipolare file o eseguire altri programmi. Prima dell'invenzione della GUI, la shell era l'interfaccia utente principale di un sistema operativo. Su MS-DOS, la shell si chiamava command.com e poche persone hanno mai provato a usarne uno diverso. Su Unix, tuttavia, esistono da tempo più shell tra cui gli utenti possono scegliere.

Possono essere divisi in 3 tipi. Le shell compatibili con Bourne utilizzano la sintassi derivata dalla shell Bourne originale. Le shell C usano la sintassi della shell C originale. Poi ci sono shell non tradizionali che inventano la propria sintassi, o ne prendono in prestito una da qualche linguaggio di programmazione, e sono generalmente molto meno popolari dei primi due tipi.

Un comando integrato è semplicemente un comando che la shell esegue da sola, invece di interpretarlo come una richiesta di caricare ed eseguire un altro programma. Questo ha due effetti principali. Innanzitutto, di solito è più veloce, perché il caricamento e l'esecuzione di un programma richiede tempo. Ovviamente, più tempo impiega l'esecuzione del comando, meno significativo è il tempo di caricamento rispetto al tempo di esecuzione complessivo (perché il tempo di caricamento è abbastanza costante).

In secondo luogo, un comando integrato può influenzare lo stato interno della shell. Ecco perché comandi come cd deve essere integrato, perché un programma esterno non può cambiare la directory corrente della shell. Altri comandi, come echo , potrebbe essere integrato per l'efficienza, ma non vi è alcun motivo intrinseco per cui non possono essere comandi esterni.

Quali comandi sono integrati dipende dalla shell che stai utilizzando. Dovrai consultare la sua documentazione per un elenco (ad esempio, bash I comandi integrati di 's sono elencati nel Capitolo 4 del suo manuale). Il type comando può dirti se un comando è integrato (se la tua shell è compatibile con POSIX), perché POSIX richiede quel type essere un built-in. Se which non è un built-in nella tua shell, quindi probabilmente non conoscerà i built-in della tua shell, ma cercherà solo programmi esterni.

Correlati:escludere alcuni comandi dall'essere archiviati nella cronologia di bash?
Linux
  1. Differenza tra shell di accesso e shell non di accesso?

  2. La differenza tra le citazioni "...", '...', $'...' e $"..." In The Shell?

  3. La differenza tra [[ $a ==Z* ]] e [ $a ==Z* ]?

  4. Qual è la differenza tra individuare e trovare il comando in Linux

  5. Differenza tra '{}' e {} nel comando find?

La differenza tra più, meno e la maggior parte dei comandi

Qual è la differenza tra Cat e Touch Command

Qual è la differenza tra Login e Non-Login Shell

Qual è la differenza tra il comando apt e apt-get?

Qual è la differenza tra i comandi kill e killall?

Qual è la differenza tra una console, un terminale e una shell?