Syftet med en kommandotolk (även kallad ett skal) är att tillhandahålla ett användargränssnitt för att interagera med operativsystemets kärna. Det fungerar som en översättare, tar mänskliga läsbara kommandon (som `ls`,` mkdir`, `cp`) och översätter dem till systemsamtal som kärnan förstår och kan utföra. Dessa systemsamtal utför åtgärder på låg nivå som att hantera filer, processer och minne.
Kommandotolkaren separeras vanligtvis från kärnan av flera avgörande skäl:
* Säkerhet: Att separera skalet från kärnan lägger till ett lager av säkerhet. Om en sårbarhet finns i skalet (ett skadligt program kan utnyttja det) är det mycket mindre troligt att direkt kompromissa med kärnans kärnfunktionalitet. Kärnan förblir en skyddad, isolerad komponent.
* Flexibilitet och portabilitet: Separationen gör det möjligt att använda olika skal med samma kärna. Användare kan välja ett skal som bäst passar deras behov (t.ex. bash, ZSH, FISH), erbjuda olika funktioner, anpassningsalternativ och skriptfunktioner. Detta förbättrar flexibiliteten och stöder portabilitet - kärnan behöver inte modifieras för att stödja ett nytt skal.
* Underhåll och utveckling: Att hålla skalet separat förenklar utveckling och underhåll. Ändringar eller uppdateringar av skalet kräver inte kompilation eller omstart av hela operativsystemet. Team kan arbeta självständigt på kärnan och skalet, vilket leder till snabbare utvecklingscykler.
* Resurshantering: Ett mindre privilegierat skal förhindrar ett skadligt program från att direkt komma åt och manipulera avgörande kärnresurser. Detta begränsar omfattningen av skador som ett komprometterat skal kan orsaka systemet.
I huvudsak främjar separationen en mer robust, säker, flexibel och underhållbar driftssystemdesign. Kärnan fokuserar på kärnfunktioner, medan skalet hanterar användargränssnittet och kommandoutförande och fungerar som en avgörande mellanhand.