Recently, Apple announced that as from the next version of macOS, Catalina, they will be adopting zsh as their default shell in replacing of bash. Ik heb al mijn commandoregels in bash geleerd en vroeg me af wat dit voor gevolgen zou hebben voor mij als student datawetenschappen. Was wat ik in bash geleerd had nutteloos geworden? Laten we eens kijken naar de twee en erachter komen.
De “Bourne-again shell” of kortweg bash werd in 1989 gemaakt door Brian Fox. Het is een Unix shell en commandotaal geschreven als vervanging voor de Bourne shell. Het is wijd verspreid als de standaard login-shell voor de meeste Linux-distributies en Apple’s macOS. Bash introduceerde verbeteringen ten opzichte van Bourne shell, waaronder de mogelijkheid om het als een scripttaal te gebruiken. Gebruikers konden hun eigen shell scripts schrijven voor het automatiseren van taken.
“Z shell” of kortweg zsh, werd in 1990 gemaakt door Paul Falstad. Het is ook een Unix shell en commandotaal gebaseerd op Bourne shell met een groot aantal verbeteringen, waaronder een aantal functies van bash. Zsh had ook de mogelijkheid om gebruikt te worden als een scripttaal met de mogelijkheid om shell scripts te gebruiken. Het heeft momenteel een zeer sterke gemeenschap en ondersteuning.
Bash vs. zsh:
Voor het grootste deel zijn bash en zsh bijna identiek, wat een opluchting is. Navigatie is hetzelfde tussen de twee. De commando’s die je hebt geleerd voor bash zullen ook werken in zsh, hoewel ze anders kunnen werken op de uitvoer. Zsh lijkt veel meer aanpasbaar te zijn dan bash. Ik zal nu een paar functies doornemen en hoe ze verschillen in beide.
Auto-aanvullen
Een handige functie van beide shells is de tab auto-aanvul functie. In beide shells kun je het commando typen gevolgd door een druk op tab om de beschikbare opties na het commando weer te geven. Zsh’s tab-completie heeft meer mogelijkheden en geeft je een lijst met opties die je dan kunt navigeren en selecteren met de pijltjestoetsen in plaats van te moeten worstelen met hoofdletters of te knoeien met lange lijsten met mappen met spaties erin. Zsh heeft zelfs tab completion voor Git!
Auto-correctie
Als je snel en los typt, in zsh als je bijvoorbeeld een typefout maakt tijdens het schrijven van een commando, dan is spellingscorrectie ingebouwd, zal automatisch de typefout detecteren, en vragen of je deze wilt corrigeren.
Plug-in ondersteuning
Zsh heeft een online gemeenschap genaamd Oh My Zsh die een van de oudste en meest populaire opties is om zsh te beheren. Het biedt meer dan 250 plugins en 140 verschillende thema’s geleverd door de gemeenschap. Dit stelt gebruikers in staat om in een omgeving te werken die specifiek op hun werkstroom is ingesteld. Hieronder ziet u een voorbeeld van de git plug in.
Bash heeft een grote set programmeer functies zoals looping en conditionele constructies, tilde en accolades uitbreidingen, en het gebruik van aliassen. Bash is ook een oudere en gevestigde shell, wat betekent dat het ook tonnen online bronnen heeft om te vinden wat je moet doen. Veel van de mogelijkheden van zsh kunnen worden gerepliceerd in bash door middel van verschillende methoden.
Take Zsh for a Spin!
Wil je zsh uitproberen voor de release van macOS catalina? Als u macOS gebruikt, heeft u waarschijnlijk al zsh op uw computer staan. U kunt dit controleren door het commando uit te voeren: welke zsh
Als zsh op uw systeem aanwezig is, wordt het pad voor de installatie teruggegeven. Om van daaruit over te schakelen naar zsh voert u het commando uit: chsh -s /bin/zsh en u wordt om uw wachtwoord gevraagd.
Om zsh te gaan gebruiken start u uw terminal opnieuw.
Als u wilt terugschakelen naar bash, voert u het commando uit: which bash , dat u de locatie van uw bash-installatie zal geven. Voer dan uit: chsh -s /bin/bash
Start uw terminal opnieuw, en u bent weer terug op vertrouwd terrein.
Dus wat is beter?
Al met al zal het draaien van een van beide shells de klus klaren. Het huidige probleem met de versie van bash op macOS is dat het een verouderde versie 3.2 is. De huidige versie is 5.0. Er wordt gespeculeerd dat dit vooral te wijten is aan licentieproblemen bij apple. De overgang naar een bijgewerkte shell zal een welkome verandering zijn.
Het lijkt vooral voorkeur te zijn als het gaat om het kiezen van de een boven de ander. Veel van de gemakken die zsh biedt, kunnen ook in bash worden gebruikt. Naar mijn mening is zsh nuttiger voor mij als een nieuwere shell gebruiker.
Voor meer informatie over Oh-My-Zsh, een uitstekend community-gedreven framework voor het beheren van uw zsh-configuratie, kunt u hier terecht: https://github.com/robbyrussell/oh-my-zsh