Dai tuoi commenti, sembri essere confuso su cosa sia esattamente una shell . Il kernel è responsabile della gestione del sistema. È la parte che carica ed esegue effettivamente i programmi, accede ai file, alloca la memoria, ecc. Ma il kernel non ha un'interfaccia utente; puoi comunicare con esso solo usando un altro programma come intermediario.
Una shell è un programma che stampa un prompt, legge una riga di input da te e quindi la interpreta come uno o più comandi per manipolare i file o eseguire altri programmi. Prima dell'invenzione della GUI, la shell era l'interfaccia utente principale di un sistema operativo. Su MS-DOS, è stata chiamata la shell command.com
e poche persone hanno mai provato a usarne una diversa. Su Unix, tuttavia, ci sono state a lungo più shell da cui gli utenti potevano scegliere.
Possono essere divisi in 3 tipi. Le shell compatibili con Bourne usano la sintassi derivata dalla shell Bourne originale . Le shell C usano la sintassi della shell C originale . Quindi ci sono shell non tradizionali che inventano la propria sintassi o ne prendono in prestito uno da un linguaggio di programmazione e sono generalmente molto meno popolari dei primi due tipi.
Un comando integrato è semplicemente un comando che la shell esegue se stesso, invece di interpretarlo come una richiesta per caricare ed eseguire altri programmi. Questo ha due effetti principali. Innanzitutto, di solito è più veloce, perché caricare ed eseguire un programma richiede tempo. Naturalmente, più tempo impiega il comando a eseguire, meno significativo è il tempo di caricamento rispetto al tempo di esecuzione complessivo (poiché il tempo di caricamento è abbastanza costante).
In secondo luogo, un comando integrato può influire sullo stato interno della shell. Ecco perché comandi come cd
devono essere integrati, perché un programma esterno non può cambiare la directory corrente della shell. Altri comandi, come echo
, potrebbero essere integrati per efficienza, ma non c'è motivo intrinseco che non possano essere comandi esterni.
Quali comandi sono integrati dipende dalla shell che stai usando. Dovrai consultare la sua documentazione per un elenco (ad esempio, bash
i comandi integrati sono elencati nel Capitolo 4 del suo manuale ). Il type
comando può dire se un comando è incorporato (se la shell è compatibile con POSIX), poiché POSIX richiede che type
sia incorporato. Se which
non è un built-in nella tua shell, probabilmente non conoscerà i built-in della tua shell, ma cercherà solo programmi esterni.