Wat is het verschil tussen Bash, Zsh en andere Linux-shells?

We hebben onderwerpen behandeld over shell-scripting omdat Linux op bijna alles kan worden gezet. De veelzijdigheid van de commandoregel-shell maakt dit echt mogelijk, maar wat maakt elke shell anders en waarom verkiezen mensen de ene boven de andere?

Wat doen schelpen?

De opdrachtregel is een zeer interessant ding. Ooit beschouwd als de meest geavanceerde gebruikersinterface, is het de weg van vesten en vulpennen gegaan: gemeden naar de periferie. Hoewel je nog steeds veel van het doel en het nut ervan inziet, worden ze meestal in de eerste plaats terzijde geschoven voor liefhebbers om te waarderen, vooral omdat ze de tijd besteden om de ins en outs ervan te leren. Inderdaad, de opdrachtregel in een bepaald besturingssysteem zal veel eigenaardigheden hebben, omdat easy OS opdrachten anders interpreteert. Tegenwoordig is dit vooral een probleem tussen Linux, OS X en Windows, maar voorheen was dit een probleem met de meeste computers.



wat-en-8217;s-het-verschil-tussen-bash-zsh-en-andere-linux-shells foto 2

(Afbeelding door blakespot)

Shells kwamen in beeld en lieten een meer standaard uitbreiding van de opdrachtregel toe op een manier die veel onopvallender was. Shells voegde veel functionaliteit toe, zoals het invullen van commando's en bestandsnamen en meer geavanceerde scriptmogelijkheden, en hielp bij het brengen van enkele prestatieverbeteringen. Ze hebben ook veel gedaan om enkele vervelende problemen op te lossen. In Unix kon je bijvoorbeeld geen back-up maken via symbolische links naar de mappen voordat je ze volgde. Al met al hebben ze een aantal functies toegevoegd waarmee gebruikers hun werk sneller en efficiënter kunnen doen, net als Linux's overvloed aan alternatieve Window Managers.

Waarom zijn er zoveel?

wat-en-8217;s-het-verschil-tussen-bash-zsh-en-andere-linux-shells foto 3

De meest prominente stamvader van moderne schelpen is de Bourne-schelp - bekend als 'sh' - die is vernoemd naar de maker Stephen Bourne die bij AT&T werkte. Het werd de standaard Unix-commando-interpreter vanwege zijn ondersteuning voor opdrachtvervanging, piping, variabelen, conditietesten en looping, samen met andere functies. Dit was in een tijdperk waarin programmeren echt samenging met het gebruik van de opdrachtregel, een praktijk waarvan velen beweren dat deze tegenwoordig verwaterd is. Het bood gebruikers niet veel speelruimte in aanpassingen voor gebruikers, zoals aliassen, het voltooien van opdrachten en shell-functies (hoewel deze laatste uiteindelijk werd toegevoegd).

C shell ('csh') is ontwikkeld door Bill Joy bij UCB en heeft de boel flink opgeschud. Het voegde veel interactieve elementen toe die gebruikers konden gebruiken om hun systemen te besturen, zoals aliassen (snelkoppelingen voor lange opdrachten), taakbeheermogelijkheden, opdrachtgeschiedenis en meer. Het was gemodelleerd naar de programmeertaal C, een interessant idee omdat Unix in C was geschreven. Het betekende ook dat gebruikers van de Bourne-shell C moesten leren, zodat ze er opdrachten in konden invoeren. Bovendien had het talloze bugs die gedurende een lange periode door zowel gebruikers als makers moesten worden opgelost. Mensen gebruikten uiteindelijk de Bourne-shell voor scripts omdat deze beter omging met niet-interactieve commando's, maar bleven bij de C-shell voor normaal gebruik.

In de loop van de tijd hebben veel mensen de bugs opgelost en functies aan de C-shell toegevoegd, met als hoogtepunt iets dat 'tcsh' wordt genoemd. Het probleem was dus dat op gedistribueerde Unix-gebaseerde computers csh nog steeds de standaard was en dat er een aantal niet-standaard functies waren toegevoegd, waardoor er een zeer gefragmenteerde warboel van dingen ontstond (achteraf bezien). Vervolgens werkte David Korn van AT&T aan de Korn-shell - 'ksh' - die probeerde de situatie te verzachten door de taal van de Bourne-shell als basis te gebruiken, maar alle nieuwe functies toevoegde die iedereen gewend was. Helaas voor velen was het niet gratis.

Een ander antwoord op de hectische propriëtaire csh-implementaties was de Portable Operating System Interface voor Unix, of POSIX. Het was een succesvolle poging om een ​​standaard te creëren voor het interpreteren van commando's (onder andere) en het weerspiegelde uiteindelijk veel van de functies die de Korn-shell had. Tegelijkertijd was het GNU-project aan de gang en was het een poging om een ​​gratis besturingssysteem te maken dat volledig Unix-compatibel was. Het ontwikkelde een shell voor zijn eigen doel: de Bourne Again-shell, gevormd door kenmerken van sh, csh en ksh tegen elkaar te bashen. Het resultaat was, achteraf gezien, behoorlijk indrukwekkend.

Kenneth Almquist creëerde een Bourne shell-kloon - 'ash' - die POSIX-compatibel was en de standaard shell zou worden in BSD, een andere branch/kloon van Unix. Het unieke is dat het echt licht van gewicht is, dus het werd extreem populair in embedded-Linux-systemen. Als je een geroote Android-telefoon hebt waarop BusyBox is geïnstalleerd, gebruikt deze code van ash. Debian ontwikkelde een kloon op basis van as genaamd 'dash'.

wat-en-8217;s-het-verschil-tussen-bash-zsh-en-andere-linux-shells foto 5

(Afbeelding door anderen)

Een van de meest prominente nieuwe shells is 'zsh', ontwikkeld door Paul Falstad in 1990. Het is een Bourne-achtige shell die functies van bash en eerdere shells overneemt en nog meer functies toevoegt. Het heeft spellingcontrole, de mogelijkheid om te kijken naar logins / logouts, enkele ingebouwde programmeerfuncties zoals bytecode, ondersteuning voor wetenschappelijke notatie in syntaxis, maakt rekenkunde met drijvende komma mogelijk, en nog wat. Een andere is de Friendly Interactive Shell, 'fish', die zich richt op opdrachtsyntaxis die gemakkelijk te onthouden en te gebruiken is.

Over het algemeen zijn de meeste shells gemaakt als klonen van eerdere shells die functionaliteit toevoegden, bugs verholpen en licentieproblemen en -kosten omzeilden. De opmerkelijke uitzonderingen zijn de originele Bourne-schaal en de C-schaal, en zowel rc-schaal als essenhout, die niet helemaal origineel zijn, maar zeker een niche-nut hebben.

Welke moet ik gebruiken?

wat-en-8217;s-het-verschil-tussen-bash-zsh-en-andere-linux-shells foto 6

Met zo veel mensen zou je denken dat het moeilijk is om te kiezen welke shell je wilt gebruiken, maar het is eigenlijk niet zo moeilijk. Omdat er zoveel gebaseerd zijn op Bourne-shell, zullen de basiszaken hetzelfde zijn tussen de meeste shells.

Bash is de meest gebruikte shell die er is en is de standaard voor de meeste Linux-distributies. Het is echt robuust en heeft tal van functies, waarvan je de meeste waarschijnlijk niet zult gebruiken, tenzij je programmeert, dus het is redelijk veilig om te zeggen dat je je aan deze kunt houden. Omdat het zo gewoon is, is het perfect voor het scripten van dingen die op verschillende platforms zullen worden gebruikt. Als je iets anders wilt proberen dat iets gebruiksvriendelijker is, kun je in plaats daarvan vis proberen.

Als je veel sleutelt aan embedded-Linux-systemen, Linux graag op belachelijke dingen zoals je Nintendo DS zet, of als je echt van Debian houdt, dan is ash/dash waarschijnlijk het meest geschikt voor jou. Nogmaals, het werkt meestal zoals de anderen, maar omdat het een soort van kale en lichtgewicht is, zul je merken dat er wat meer gecompliceerde functionaliteit ontbreekt.

wat-en-8217;s-het-verschil-tussen-bash-zsh-en-andere-linux-shells foto 7

(Afbeelding door renrutal)

Als je van plan bent om te programmeren of te leren ontwikkelen op de opdrachtregel, dan moet je wat kieskeuriger zijn. Bash is een prima keuze, maar ik ken genoeg mensen die voor de extra's naar Zsh zijn overgestapt. Ik denk dat het echt afhangt van hoe ingewikkeld je projecten zullen worden en welk type functionaliteit je verkiest van je shell. Sommige mensen houden zich nog steeds aan tcsh omdat ze C regelmatig kennen en gebruiken en het voor hen gemakkelijker is. De kans is groot dat als je niet zeker weet welke shell je moet kiezen, je waarschijnlijk niet veel programmeert, dus probeer iets te kiezen dat aansluit bij wat je wilt leren en doe wat onderzoek naar wat anderen in dat veld gebruiken.

U kunt eenvoudig verschillende shells installeren en verwijderen met behulp van het Software Center op Ubuntu of uw favoriete pakketbeheerder. Shells bevinden zich in de /bin/ directory, en zolang je een moderne Linux-distributie gebruikt, is het gemakkelijk om te veranderen wat je standaard is. Voer gewoon de volgende opdracht in:

chsh

U wordt om uw wachtwoord gevraagd, waarna u naar een andere shell kunt gaan door het pad in te voeren.

wat-en-8217;s-het-verschil-tussen-bash-zsh-en-andere-linux-shells foto 8

Tussen vierkante haken ziet u uw huidige standaard, en als u het wilt laten zoals het is, drukt u gewoon op Enter.


Blijf je bij bas? Heb je nog een andere favoriete schelp? Wat is je meest gebruikte functie? Vertel ons je mening in de comments!

Meer verhalen

Wat u zei: controleert u uw bandbreedtegebruik?

Eerder deze week vroegen we je om te delen hoe (of helemaal niet) je je bandbreedte bewaakt voor zowel thuisnetwerken als mobiele apparaten. We zijn terug om uw favoriete tools en tips te delen.

Weekendproject: bouw een koffer van koolstofvezel voor je favoriete gadget

Als je ooit koolstofvezel hebt gezien, dacht je waarschijnlijk dat het een soort ruimtetijdperk was dat alleen onder zorgvuldig gecontroleerde omstandigheden in een fabriek kon worden vervaardigd.

Vrijdagpret: Rome-puzzel

Het weekend is bijna aangebroken, maar waarom niet een beetje ontspannen en de rand van uw werkdag halen totdat u naar huis kunt vertrekken? In de game van deze week heb je een kans op grootsheid en de mogelijkheid om Olympus te bezoeken terwijl je werkt aan het bouwen van een nieuwe stad in het vervlogen tijdperk van het oude Rome.

Uit het vak Tips: meerdere achtergronden selecteren, snelle iBook-navigatie en app-prijzen volgen

Een keer per week openen we de doos met tips en delen we de geweldige tips die je hebt ingestuurd. Deze week bekijken we hoe je eenvoudig meerdere achtergronden in Windows 7 kunt instellen, door iBook kunt bladeren en dalende app-prijzen kunt volgen.

Geweldige papieren vliegtuigen om thuis of op het werk voor de lol te maken [Geek Fun]

Heb je van die dagen dat je je verveelt en iets leuks wilt doen? Pak dan wat papier en creëer je eigen persoonlijke vloot van papieren vliegtuigen met deze geweldige how-to-kaart!

Beginner: overschakelen van iGoogle terug naar gewone Google-startpagina

Vandaag schreef een lezer ons dat hun startpagina vroeger Google was, maar nu lijken ze in plaats daarvan vast te zitten op iGoogle en zouden ze liever de gewone oude Google terug hebben. Dit is wat we ze vertelden.

Canto verandert YouTube in een jukebox

Bezoek Cantio als gast en je kunt naar hartelust muziek zoeken. Meld u aan voor een gratis account en u kunt afspeellijsten maken, de video's bij de muziek bekijken en aanvullende artiestinformatie ophalen. Daarnaast...

Google Maps voor Android ondersteunt nu offline caching

Google Maps voor Android is een geweldige manier om uw weg te vinden, maar wat als u zich in een gebied met vlekkerige connectiviteit bevindt? De nieuwe Download Map Area slaat kaarten op voor offline gebruik.

De fysica van druppelkoffiezetapparaten [Video]

Er komt water in en er komt koffie uit. Simpel, toch? Hoewel een koffiezetapparaat misschien eenvoudig te gebruiken is en minimale onderdelen gebruikt om de klus te klaren (en de kosten laag te houden), is de fysica van het proces fascinerend....

Hoe u uw pc kunt (ont)grendelen door in de buurt te zijn (met een Bluetooth-telefoon)

Stel je voor: je loopt je kamer binnen, zit voor je computer en hij ontgrendelt zichzelf. Je maakt af wat je aan het doen bent, loopt weg en het sluit zichzelf. Nee, het is geen magie - het is Bluetooth en het is eenvoudig in te stellen!