Les commandes UNIX sont divisées en commandes internes (intégrées) et externes pour plusieurs raisons clés liées à l'efficacité, à la sécurité et à la conception du système :
* Efficacité : Les commandes internes font partie du shell lui-même (par exemple, `bash`, `zsh`). Ils sont compilés directement dans l'exécutable du shell, ce qui signifie que le shell n'a pas besoin de passer du temps à rechercher leur emplacement dans le système de fichiers. Cela rend leur exécution nettement plus rapide que les commandes externes. Des commandes simples comme « cd », « pwd », « echo » et « exit » sont des candidats parfaits pour cette optimisation.
* Sécurité : Les commandes internes peuvent être contrôlées plus étroitement par le shell. Cela permet de meilleurs contrôles de sécurité et empêche certaines activités malveillantes. Les commandes externes, en revanche, doivent être localisées et exécutées, ce qui introduit une vulnérabilité potentielle si un programme malveillant est déguisé en commande légitime.
* Flexibilité et maintenabilité : La séparation permet la modularité. Les commandes externes sont des exécutables distincts résidant dans des répertoires spécifiés par la variable d'environnement `PATH` du shell. Cela permet des mises à jour plus faciles, l'ajout de nouvelles commandes et la suppression des commandes obsolètes sans recompiler l'intégralité du shell. Vous pouvez facilement ajouter de nouvelles fonctionnalités en installant simplement de nouveaux exécutables.
* Gestion des ressources : Les commandes internes ont généralement une surcharge moindre car elles ne nécessitent pas de création de processus distinct pour leur exécution. Les commandes externes, en revanche, créent un nouveau processus, entraînant une consommation accrue de ressources (mémoire et temps CPU). Cette différence est particulièrement visible lorsqu’il s’agit d’un grand nombre de commandes.
* Gestion des espaces de noms : Les commandes internes ont un espace de noms dédié dans le shell. Les commandes externes ont leur propre espace de noms et peuvent nécessiter une gestion minutieuse pour éviter les conflits. La division assure un meilleur contrôle de l'espace de noms et réduit les collisions de noms potentielles.
En bref, la division offre un équilibre entre vitesse, sécurité, flexibilité et gestion des ressources. Les commandes internes gèrent efficacement des tâches simples et fréquentes, tandis que les commandes externes offrent des fonctionnalités et une maintenabilité étendues.
|