Wat is zsh? Functies en gebruik uitgelegd
Auteur: Redactie Domeny.ForSale Gepubliceerd
In het kort: Zsh, oftewel Z shell, is een systeemshell: een programma dat ingevoerde opdrachten interpreteert en de opgegeven taken uitvoert. Dankzij uitgebreide opdrachtaanvulling, een opdrachtgeschiedenis en configuratiemogelijkheden maakt zsh het werken in de terminal gemakkelijker. Het is vooral handig voor interactief werken met het systeem, maar je hoeft zsh niet te kennen om met de terminal te beginnen.
Zsh en de terminal — wat is het verschil?
Een terminal is een toepassing waarin je opdrachten invoert en de resultaten ziet. De shell werkt binnen die toepassing: hij leest opdrachten, herkent hun syntaxis en laat de bewerkingen uitvoeren. In dezelfde terminal kun je verschillende shells starten, bijvoorbeeld zsh of Bash.
Als je cd Documenten invoert, voert zsh zijn eigen opdracht uit om van map te veranderen. Als je git status invoert, start hij het externe programma Git, mits dat geïnstalleerd is en in het zoekpad voor programma’s staat. Dat onderscheid is belangrijk: als je zsh installeert, worden de hulpmiddelen waarvan je de namen in opdrachten gebruikt niet automatisch mee geïnstalleerd.
Zsh is onder meer beschikbaar voor Linux en macOS. Vanaf macOS Catalina is het de standaardshell voor nieuwe gebruikersaccounts, al kan een specifiek account een andere instelling hebben. In Windows kun je zsh bijvoorbeeld gebruiken binnen WSL, een omgeving waarin je hulpmiddelen voor Linux kunt uitvoeren.
Wat biedt zsh bij dagelijks gebruik?
Het grootste voordeel van zsh is dat je herhaalde onderdelen van opdrachten minder vaak handmatig hoeft in te voeren. Het gebruiksgemak hangt wel af van de configuratie: een nieuwe installatie ziet er niet noodzakelijk hetzelfde uit en gedraagt zich niet per se zoals de terminal in een handleiding.
Handige mogelijkheden zijn:
- Aanvullen met de Tab-toets: zsh kan opdrachtnamen, paden, opties en argumenten voorstellen. Welke suggesties je krijgt, hangt af van de beschikbare aanvullingsdefinities.
- Opdrachtgeschiedenis: hiermee kun je eerdere opdrachten opnieuw gebruiken. Om de geschiedenis tussen sessies te bewaren en te delen, zijn de juiste instellingen nodig.
- Bestandsnamen selecteren met patronen: met patronen kun je groepen bestanden aangeven zonder elke naam afzonderlijk op te sommen.
- Een instelbare prompt: de tekst vóór de cursor kan de huidige map, de status van de laatste opdracht of informatie over een Git-repository tonen.
Als je bijvoorbeeld werkt in een map die de submap project-winkel bevat, kun je cd proj invoeren en op Tab drukken. De shell probeert de naam aan te vullen. Als meerdere mappen overeenkomen, kan hij de beschikbare mogelijkheden tonen. Andere shells bieden vergelijkbare functies. Voor sommige gebruikers zit het voordeel van zsh dan ook in de vele configuratiemogelijkheden en beschikbare uitbreidingen, niet in het aanvullen op zich.
Zsh of Bash — wat kies je?
Bash is een andere populaire shell, die je vaak tegenkomt in Linux en in beheerscripts. Zsh en Bash ondersteunen veel vergelijkbare opdrachten, maar hun syntaxis is niet volledig compatibel. Er zijn onder meer verschillen in arrays, het uitwerken van variabelen en het selecteren van bestandsnamen met patronen.
Een praktisch voorbeeld: met de standaardinstellingen van zsh geeft de opdracht ls *.txt een fout over het ontbreken van overeenkomende bestanden als er in de map geen bestanden met de extensie .txt staan. Bash geeft in dat geval standaard het letterlijke argument *.txt door aan het programma ls, dat vervolgens meldt dat zo’n bestand niet bestaat. Een schijnbaar identieke opdracht kan dus in een andere fase vastlopen.
Kies voor dagelijks gebruik de shell waarin je het gemakkelijkst je taken uitvoert. Kies voor scripts bewust de juiste interpreter. Een script dat begint met #!/bin/bash wijst Bash aan als interpreter wanneer je het rechtstreeks uitvoert. Dat je zsh in de terminal gebruikt, betekent niet dat je zo’n script moet herschrijven. Als je het met zsh script.sh uitvoert, kunnen er echter compatibiliteitsfouten ontstaan.
Hoe controleer en start je zsh?
Controleer eerst of het programma beschikbaar is:
zsh --version
Als je een versienummer krijgt, kun je zsh uitproberen door zsh in te voeren. De opdracht exit beëindigt die sessie en brengt je terug naar de vorige shell. Dit verandert de standaardinstellingen van je account niet.
Als het systeem het programma niet kan vinden, installeer je het in Linux via de pakketbeheerder van je distributie. In Debian en Ubuntu gebruik je daarvoor bijvoorbeeld sudo apt install zsh. Voor deze opdracht zijn beheerdersrechten nodig. Gebruik je een andere distributie, raadpleeg dan de officiële documentatie daarvan voor de juiste procedure.
De vaak aanbevolen opdracht echo $SHELL toont doorgaans de ingestelde inlogshell, maar niet noodzakelijk de shell die in de huidige sessie draait. Nadat je zsh hebt gestart, kun je dit controleren met echo $ZSH_VERSION: in zsh bevat die variabele het versienummer van zsh.
De standaardshell van een account kun je meestal wijzigen met het hulpmiddel chsh. Controleer eerst het pad naar het programma en de regels van je systeem: de shell moet mogelijk in de lijst /etc/shells staan, en voor bedrijfsaccounts kunnen beheerdersbeperkingen gelden.
Zsh configureren en de rol van Oh My Zsh
Het belangrijkste configuratiebestand voor interactieve sessies is meestal ~/.zshrc, waarbij ~ de thuismap van de gebruiker aanduidt. Je kunt daarin aliassen, oftewel verkorte opdrachten, en instellingen voor aanvulling opnemen. Een eenvoudig begin ziet er zo uit:
alias ll='ls -lh'
autoload -Uz compinit
compinit
Met de alias kun je ll invoeren in plaats van ls -lh. De volgende regels initialiseren het aanvullingssysteem. Maak voordat je een bestaand bestand bewerkt een kopie en controleer of er al vergelijkbare instellingen in staan. Je kunt de wijzigingen het gemakkelijkst testen in een nieuwe zsh-sessie.
Oh My Zsh is een optionele verzameling configuraties, thema’s en plug-ins, niet de shell zelf. Gekleurde suggesties tijdens het typen en syntaxiskleuring zijn vaak afkomstig van extra uitbreidingen. Ze zijn niet automatisch beschikbaar zodra je zsh installeert.
Begin door zsh te starten zonder je standaardshell te wijzigen en voer een paar van je gebruikelijke taken uit. Voeg pas uitbreidingen toe als je kunt aangeven welke specifieke handeling ze gemakkelijker moeten maken. Controleer voordat je een installatieprogramma uitvoert waar het vandaan komt en welke wijzigingen het aanbrengt.
Zie ook: Wat is AGI?
