D'après vos commentaires, vous semblez ne pas savoir exactement ce qu'est un shell . Le noyau est responsable de la gestion du système. C'est la partie qui charge et exécute les programmes, accède aux fichiers, alloue de la mémoire, etc. Mais le noyau n'a pas d'interface utilisateur; vous ne pouvez communiquer avec elle qu'en utilisant un autre programme en tant qu'intermédiaire.
Un shell est un programme qui imprime une invite, lit une ligne d’entrée, puis l’interprète comme une ou plusieurs commandes permettant de manipuler des fichiers ou d’exécuter d’autres programmes. Avant l'invention de l'interface graphique, le shell était l'interface utilisateur principale d'un système d'exploitation. Sous MS-DOS, le shell a été appelé command.com
et peu de personnes ont déjà essayé d’en utiliser un autre. Sous Unix, cependant, il y avait longtemps que plusieurs utilisateurs pouvaient choisir.
Ils peuvent être divisés en 3 types. Les shells compatibles Bourne utilisent la syntaxe dérivée du shell Bourne d' origine . Les shells C utilisent la syntaxe du shell C d' origine . Ensuite, il y a des shells non traditionnels qui inventent leur propre syntaxe, ou en empruntent une à un langage de programmation, et sont généralement beaucoup moins populaires que les deux premiers types.
Une commande intégrée est simplement une commande que le shell exécute elle-même, au lieu de l'interpréter comme une demande de chargement et d'exécution d'un autre programme. Cela a deux effets principaux. Tout d’abord, c’est généralement plus rapide, car charger et exécuter un programme prend du temps. Bien entendu, plus la commande est longue à exécuter, moins le temps de chargement est significatif par rapport au temps d'exécution total (car le temps de chargement est relativement constant).
Deuxièmement, une commande intégrée peut affecter l'état interne du shell. C'est pourquoi les commandes telles que cd
doivent être intégrées, car un programme externe ne peut pas changer le répertoire en cours du shell. D'autres commandes, telles que echo
, peuvent être intégrées pour plus d'efficacité, mais il n'y a aucune raison intrinsèque pour lesquelles elles ne peuvent pas être des commandes externes.
Les commandes intégrées dépendent du shell que vous utilisez. Vous devrez consulter sa documentation pour obtenir une liste (par exemple, bash
les commandes intégrées de sont listées au chapitre 4 de son manuel ). La type
commande peut vous dire si une commande est intégrée (si votre shell est compatible POSIX), car POSIX nécessite que ce type
soit un composant intégré. S'il which
ne fait pas partie de votre shell, il ne sera probablement pas au courant de ses intégrations, mais recherchera simplement des programmes externes.