Wat is een shell en waarvoor gebruik je die?
Auteur: Redactie Domeny.ForSale Gepubliceerd
In het kort: Een shell is een programma dat opdrachten van de gebruiker ontvangt en waarmee je programma’s kunt starten en handelingen in het systeem kunt uitvoeren. Meestal wordt hiermee een tekstgebaseerde shell bedoeld, zoals Bash, Zsh of PowerShell. Een shell is niet hetzelfde als een terminal: de terminal biedt een plek om opdrachten in te voeren, terwijl de shell ze interpreteert.
Waarvoor dient een shell?
Met een shell kun je een computer bedienen via opdrachten in plaats van op knoppen en pictogrammen te klikken. Je kunt mappen bekijken, bestanden kopiëren, toepassingen starten, actieve processen controleren of een server beheren. Welke handelingen beschikbaar zijn, hangt af van het systeem, de geïnstalleerde programma’s en de rechten van je account.
Wanneer je een opdracht invoert, herkent de shell de naam en eventuele aanvullende argumenten: gegevens die bepalen hoe de taak moet worden uitgevoerd. Vervolgens voert de shell een eigen functie uit of start hij een extern programma. Bij de opdracht python script.py start de shell bijvoorbeeld de interpreter van Python en geeft hij de naam van het uit te voeren bestand door. De shell interpreteert de code in Python dus niet zelf.
Shells zijn vooral handig voor terugkerende taken. In plaats van tientallen bestanden handmatig te hernoemen, kun je een reeks opdrachten voorbereiden die dat volgens één regel doet. Zo’n reeks opdrachten in een bestand heet een shellscript.
Het begrip ‘shell’ heeft ook een bredere betekenis: het kan een grafische interface voor de bediening van een systeem aanduiden. In documentatie voor programmeurs en bij serverbeheer verwijst ‘shell’ meestal naar een tekstgebaseerde shell.
Shell, terminal, console en SSH: wat is het verschil?
Deze termen worden soms door elkaar gebruikt, maar beschrijven verschillende onderdelen van het werken met een computer:
| Begrip | Betekenis |
|---|---|
| Shell | Programma dat opdrachten interpreteert, zoals Bash of PowerShell. |
| Terminal | Toepassing die tekstinvoer en -uitvoer mogelijk maakt en waarin een shell kan draaien, zoals Windows Terminal. |
| Console | Term waarvan de betekenis afhangt van de context; kan een systeemterminal aanduiden of informeel een opdrachtvenster. |
| SSH | Protocol om veilig verbinding te maken met een andere computer, vaak om in de shell van die computer te werken. |
Je kunt dus Windows Terminal openen, daarin PowerShell starten en vervolgens via SSH verbinding maken met een server met Linux. Na het inloggen kan Bash op de server de opdrachten verwerken. Het venster blijft hetzelfde, maar de computer die de opdrachten uitvoert en de gebruikte shell veranderen.
Dit onderscheid is belangrijk wanneer je instructies volgt. Een opdracht met de aanwijzing ‘plak dit in de terminal’ kan een specifieke shell, een bepaald systeem of een extra programma vereisen. Alleen een willekeurig tekstvenster openen garandeert niet dat de opdracht werkt.
Veelgebruikte shells en hun toepassingen
Bash wordt veel gebruikt op systemen met Linux en in scripts voor systeembeheer. Zsh is de standaard interactieve shell voor nieuwe gebruikersaccounts in recente versies van macOS; je komt deze shell ook tegen op Linux. Beide hebben veel vergelijkbare opdrachten en constructies, maar niet elk script werkt in beide precies hetzelfde.
PowerShell wordt vooral ontwikkeld voor automatisering en systeembeheer. Deze shell werkt op Windows en de huidige versies zijn ook beschikbaar voor Linux en macOS. Anders dan de gebruikelijke tekstpijplijnen in Bash kunnen pijplijnen in PowerShell gestructureerde objecten doorgeven, bijvoorbeeld procesgegevens met afzonderlijke velden voor de naam en de identificatiecode.
cmd.exe, de klassieke opdrachtinterpreter van Windows, komt nog steeds voor in oudere instructies en batchscripts. Het is geen andere naam voor PowerShella. De opdrachten en syntaxis van deze twee shells verschillen, hoewel ze allebei in Windows Terminal kunnen draaien.
Om te beginnen hoef je geen nieuwe shell te installeren. Gebruik de shell die in je omgeving beschikbaar is en controleer voor welk systeem en welke shell de instructies die je volgt zijn bedoeld.
Eerste opdrachten: een eenvoudig voorbeeld
Een veilige eerste stap is de huidige map controleren en de inhoud ervan weergeven. De huidige map is de locatie ten opzichte waarvan de shell paden interpreteert die niet volledig zijn opgegeven.
Voer in Bash of Zsh achtereenvolgens het volgende in:
pwd
ls
mkdir shell-oefenen
cd shell-oefenen
pwd
De opdracht pwd toont de huidige map, ls geeft de inhoud ervan weer en mkdir maakt een nieuwe map aan. Met cd ga je naar de opgegeven map. Dit voorbeeld verwijdert geen bestanden; het maakt de map shell-oefenen aan, mits je de juiste rechten hebt en die map nog niet bestaat.
In PowerShellu ziet een vergelijkbare reeks met de volledige opdrachtnamen er zo uit:
Get-Location
Get-ChildItem
New-Item -ItemType Directory -Name shell-oefenen
Set-Location shell-oefenen
Get-Location
Zet een pad dat spaties bevat tussen aanhalingstekens, bijvoorbeeld cd "Mijn documenten". Zonder aanhalingstekens kan de shell de delen van het pad als afzonderlijke argumenten behandelen.
Hoe werk je veilig met een shell?
Een shell is niet per definitie gevaarlijk, maar je kunt er snel handelingen op veel bestanden mee uitvoeren. Wees vooral voorzichtig met opdrachten die gegevens verwijderen, rechten wijzigen of als administrator worden uitgevoerd. Een bestand verwijderen met een opdracht betekent niet noodzakelijk dat het naar de prullenbak gaat.
Controleer voordat je een onbekende opdracht uitvoert wat die doet en wat de huidige map is. Kopieer geen constructies die een script van internet downloaden en meteen uitvoeren zonder te begrijpen hoe ze werken. Als je via SSH met een server bent verbonden, controleer dan ook of je in een testomgeving of een productieomgeving werkt.
Doe je eerste oefeningen in een aparte map met kopieën van onbelangrijke bestanden. Een volgende stap kan zijn om de hulpinformatie voor één opdracht te bekijken: gebruik in Bash help cd en in PowerShellu Get-Help Set-Location.
Zie ook: Wat is AGI?
