| UNIX-opdrachten zijn onderverdeeld in interne (ingebouwde) en externe opdrachten om verschillende belangrijke redenen die verband houden met efficiëntie, beveiliging en systeemontwerp:
* Efficiëntie: Interne commando's maken deel uit van de shell zelf (bijvoorbeeld `bash`, `zsh`). Ze worden rechtstreeks in het uitvoerbare bestand van de shell gecompileerd, wat betekent dat de shell geen tijd hoeft te besteden aan het zoeken in het bestandssysteem naar hun locatie. Dit maakt de uitvoering ervan aanzienlijk sneller dan externe opdrachten. Eenvoudige commando's zoals `cd`, `pwd`, `echo` en `exit` zijn perfecte kandidaten voor deze optimalisatie.
* Beveiliging: Interne commando's kunnen strenger worden gecontroleerd door de shell. Dit zorgt voor betere veiligheidscontroles en voorkomt bepaalde kwaadaardige activiteiten. Externe commando's moeten daarentegen worden gelokaliseerd en uitgevoerd, waardoor een potentiële kwetsbaarheid ontstaat als een kwaadaardig programma wordt vermomd als een legitiem commando.
* Flexibiliteit en onderhoudbaarheid: De scheiding maakt modulariteit mogelijk. Externe commando's zijn afzonderlijke uitvoerbare bestanden die zich in mappen bevinden die zijn gespecificeerd door de omgevingsvariabele `PATH` van de shell. Dit maakt eenvoudigere updates, toevoeging van nieuwe opdrachten en verwijdering van verouderde opdrachten mogelijk zonder de hele shell opnieuw te compileren. U kunt eenvoudig nieuwe functionaliteit toevoegen door simpelweg nieuwe uitvoerbare bestanden te installeren.
* Bronnenbeheer: Interne opdrachten hebben over het algemeen minder overhead, omdat er geen afzonderlijke procescreatie voor uitvoering nodig is. Externe opdrachten creëren daarentegen een nieuw proces, wat leidt tot een hoger verbruik van hulpbronnen (geheugen en CPU-tijd). Dit verschil is vooral merkbaar bij het omgaan met een groot aantal opdrachten.
* Naamruimtebeheer: Interne opdrachten hebben een speciale naamruimte binnen de shell. Externe opdrachten hebben hun eigen naamruimte en moeten mogelijk zorgvuldig worden beheerd om conflicten te voorkomen. De verdeling zorgt voor een betere controle van de naamruimte en vermindert mogelijke naambotsingen.
Kortom, de divisie zorgt voor een balans tussen snelheid, veiligheid, flexibiliteit en resource management. Interne commando's verwerken frequente, eenvoudige taken efficiënt, terwijl externe commando's uitgebreide functionaliteit en onderhoudbaarheid bieden. |