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

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

    De meeste Linux-distributies bevatten standaard de bash-shell, maar u kunt ook overschakelen naar een andere shell-omgeving. Zsh is een bijzonder populair alternatief en er zijn andere shells, zoals ash, dash, fish en tcsh. Maar wat is het verschil, en waarom zijn er zoveel?

    Wat doen schelpen?

    Wanneer u zich aanmeldt op de opdrachtregel of een terminalvenster op Linux start, wordt het shell-programma gestart. Shells bieden een standaard manier om de opdrachtregelomgeving uit te breiden. U kunt desgewenst de standaardshell omwisselen voor een andere shell.

    De eerste shell-omgeving was de Thompson Shell, ontwikkeld bij Bell Labs en uitgebracht in 1971. Shell-omgevingen bouwen sindsdien voort op het concept en voegen een verscheidenheid aan nieuwe functies, functionaliteit en snelheidsverbeteringen toe.

    Bash biedt bijvoorbeeld de voltooiing van opdrachten en bestandsnamen, geavanceerde scriptingfuncties, een opdrachthistorie, configureerbare kleuren, opdrachtaliassen en een aantal andere functies die niet beschikbaar waren in 1971 toen de eerste shell werd vrijgegeven.

    De shell wordt ook op de achtergrond gebruikt door verschillende systeemservices. Linux-distributies bevatten vele functies die zijn geschreven als shellscripts. Deze scripts zijn opdrachten en andere geavanceerde shell scripting-functies lopen door de shell-omgeving.

    Shells die naar Bash leiden: sh, csh, tsh en ksh

    De meest prominente voorloper van moderne schelpen is de Bourne-schaal - ook bekend als "sh" - die werd genoemd naar de maker Stephen Bourne die bij AT & T's Bell Labs werkte. Uitgebracht in 1979, werd het de standaardopdracht-interpreter in Unix vanwege de ondersteuning voor opdrachtsubstitutie, piping, variabelen, conditietests en looping, samen met andere functies. Het bood niet veel aanpassingsmogelijkheden voor gebruikers en ondersteunde dergelijke moderne niceties niet als aliassen, opdrachtafronding en shell-functies (hoewel deze laatste uiteindelijk werd toegevoegd).

    De C-shell, oftewel "csh", is eind jaren zeventig ontwikkeld door Bill Joy aan de University of California, Berkley. Het voegde veel interactieve elementen toe waarmee gebruikers hun systemen konden beheren, zoals aliassen (snelkoppelingen voor lange opdrachten), mogelijkheden voor taakbeheer, opdrachtgeschiedenis en meer. Het was gemodelleerd uit de programmeertaal C, waarin het Unix-besturingssysteem zelf was geschreven. Dit betekende ook dat gebruikers van de Bourne-shell C moesten leren zodat ze daarin opdrachten konden invoeren. Bovendien had csh nogal wat bugs die zowel door gebruikers als videomakers over een lange periode moesten worden opgelost. Mensen gebruikten de Bourne shell voor scripts omdat het niet-interactieve commando's beter hanteerde, maar bleef hangen met de C-shell voor normaal gebruik.

    In de loop van de tijd hebben veel mensen bugs opgelost en functies toegevoegd aan de C-shell, met als hoogtepunt een verbeterde versie van csh, bekend als "tcsh". Maar csh was nog steeds de standaard op Unix-gebaseerde computers en had een aantal niet-standaard functies toegevoegd. David Korn van Bell Labs werkte aan de KornShell, of "ksh", die de situatie probeerde te verbeteren door backward-compatibel te zijn met de taal van de Bourne shell maar veel functies uit de csh-shell toe te voegen. Het werd uitgebracht in 1983, maar onder een gepatenteerde licentie. Het was geen gratis software tot de jaren 2000, toen het werd vrijgegeven onder verschillende open-source licenties.

    De geboorte van bash

    De Portable Operating System Interface voor Unix, of POSIX, was een ander antwoord op de hectische gepatenteerde csh-implementaties. Het creëerde met succes een standaard voor opdrachtinterpretatie (onder andere) en uiteindelijk weerspiegelde het veel van de functies in de KornShell. Tegelijkertijd probeerde het GNU-project een gratis, Unix-compatibel besturingssysteem te maken. Het GNU Project ontwikkelde een gratis software shell om deel uit te maken van zijn gratis besturingssysteem en noemde het de "Bourne Again Shell" of "bash".

    Bash is verbeterd in de decennia sinds de eerste release in 1989, maar het is nog steeds de standaard shell op de meeste Linux-distributies van vandaag. Het is ook de standaardshell op MacOS van Apple en is beschikbaar voor installatie op Microsoft Windows 10.

    Nieuwere schalen: ash, dash, zsh en fish

    Terwijl de Linux-community zich in de jaren daarna op Bash heeft gevestigd, hebben ontwikkelaars niet gestopt met het maken van nieuwe shells toen Bash 28 jaar geleden voor het eerst werd uitgebracht.

    Kenneth Almquist creëerde een Bourne shell-kloon bekend als Almquish shell, A Shell, "ash", of soms gewoon "sh". het was ook POSIX-compatibel en werd de standaardshell in BSD, een andere tak van Unix. De ash shell is lichter dan bash, waardoor deze populair is in embedded Linux-systemen. Als je een geroote Android-telefoon hebt met BusyBox geïnstalleerd - of een ander apparaat met de BusyBox-suite met software - gebruikt het code van as.

    Debian ontwikkelde een shell-omgeving op basis van as en noemde het "streepje". Het is ontworpen om POSIX-compatibel en lichtgewicht te zijn, dus het is sneller dan Bash, maar heeft niet alle functies. Ubuntu gebruikt de dash-shell als de standaard shell voor niet-interactieve taken, waardoor shell-scripts en andere taken op de achtergrond worden versneld. Ubuntu maakt nog steeds gebruik van bash voor interactieve shells, dus gebruikers hebben nog steeds de volledig functionele interactieve omgeving.

    Een van de meest populaire nieuwere shells is Z-shell of "zsh". Geschreven door Paul Falstad in 1990, is zsh een shell in Bourne-stijl die de functies bevat die je in bash vindt, plus nog meer. Zo heeft zsh spellingcontrole, de mogelijkheid om logins / logouts te bekijken, enkele ingebouwde programmeerfuncties zoals bytecode, ondersteuning voor wetenschappelijke notatie in syntaxis, maakt drijvende-komma- rekenkunde mogelijk en meer functies.

    Een andere nieuwere shell is de Friendly Interactive Shell, oftewel 'fish', die in 2005 is uitgebracht. Deze heeft een unieke syntaxis voor de opdrachtregel die is ontworpen om iets gemakkelijker te leren te zijn, maar niet is afgeleid van de Bourne-shell of de C-shell. Het is een interessant idee, maar wat je leert door het gebruik van vis, hoeft niet per se te helpen bij het gebruik van bash en andere van Bourne afkomstige schelpen.

    Welke moet u kiezen? (en waarom Zsh populair is)

    U hoeft geen shell te kiezen. Uw besturingssysteem kiest uw standaard shell voor u, en die keuze is bijna altijd bash. Ga voor een Linux-distributie zitten, of zelfs een Mac, en je hebt bijna altijd een bash-shell-omgeving. Bash heeft nogal wat geavanceerde functies, maar je zult ze waarschijnlijk niet gebruiken tenzij je shell-scripts programmeert.

    Op embedded Linux-systemen of BSD-systemen, kom je uit bij de as-shell. Maar ash is een op Bourne gebaseerde shell en is grotendeels compatibel met bash. Elke kennis die je hebt bij het gebruik van bash zal worden overgedragen naar het gebruik van een ash of dash shell, hoewel sommige geavanceerde scripting-functies niet beschikbaar zijn in deze lichtgewicht shell.

    Bijna elke shell die je tegenkomt is gebaseerd op Bourne en werkt op dezelfde manier, inclusief zsh.

    Dat is de reden waarom zsh populair is. Deze nieuwere shell is compatibel met bash, maar bevat meer functies. De zsh-shell biedt ingebouwde spellingcorrectie, verbeterde voltooiing van de opdrachtregel, laadbare modules die fungeren als invoegtoepassingen voor uw shell, algemene aliassen waarmee u aliasbestandsnamen of iets anders op de opdrachtregel kunt maken in plaats van alleen maar opdrachten, en meer ondersteuning voor thematisering. Het is net bash, maar met veel extra's, extra functies en configureerbare opties die je misschien op prijs stelt als je veel tijd doorbrengt op de opdrachtregel.

    Als u bekend bent met bash, kunt u overschakelen naar zsh zonder een andere syntaxis te leren - u krijgt alleen extra functies. als je bekend bent met zsh, kun je overschakelen naar bash zonder een andere syntaxis te leren - je hebt gewoon geen toegang tot die functies.

    "Oh My ZSH" is een tool die je helpt zsh-plug-ins gemakkelijker in te schakelen en te switchen tussen vooraf ingestelde thema's, je zsh-shell snel aan te passen zonder uren te besteden aan het aanpassen van dingen.

    Er zijn ook andere shells. De tcsh-shell is bijvoorbeeld nog steeds in de buurt en is nog steeds een optie. FreeBSD gebruikt tsch als de standaard rootshell en as als de standaard interactieve shell. Als u de C-programmering regelmatig gebruikt, is tsch wellicht beter geschikt voor u. Het is echter niet in de buurt zoals vaak wordt gebruikt als bash of zsh.

    Schakelen tussen shells

    Het is gemakkelijk om over te schakelen naar een nieuwe shell om het uit te proberen. Installeer de shell vanuit de pakketbeheerder van je Linux-distributie en typ de opdracht om de shell te starten.

    Laten we bijvoorbeeld zeggen dat je Zsh op Ubuntu wilt proberen. U voert de volgende opdrachten uit om te installeren en start deze vervolgens:

    sudo apt zsh zsh installeren

    Je zou dan in een zsh-shell zitten. Type " Uitgang "Bij de shell om het te verlaten en terug te keren naar je huidige shell.

    Dit is slechts tijdelijk. Wanneer u een nieuw terminalvenster opent of bij uw systeem aanmeldt op de opdrachtregel, ziet u uw standaardshell. Als u de shell wilt wijzigen die wordt weergegeven wanneer u zich aanmeldt, ook wel uw login-shell genoemd, kunt u over het algemeen de chsh , of "Change Shell", opdracht.

    Als u deze opdracht wilt gebruiken, moet u eerst het volledige pad naar uw shell vinden met de opdracht. Laten we bijvoorbeeld zeggen dat we wilden veranderen naar de shell van zsh. We zouden het volgende commando uitvoeren:

    welke zsh

    Op Ubuntu vertelt dit ons dat het zsh binary is opgeslagen in / usr / bin / zsh.

    Voer de volgende opdracht uit, voer uw wachtwoord in en u wordt gevraagd om een ​​nieuwe login-shell te kiezen:

    chsh

    Volgens het bovenstaande commando zouden we binnenkomen / Usr / bin / zsh . De shell van de zsh zou dan onze standaard zijn totdat we de chsh commando en veranderde het terug.