Hjemmeside » hvordan » Hva er forskjellen mellom Bash, Zsh og andre Linux Shells?

    Hva er forskjellen mellom Bash, Zsh og andre Linux Shells?

    De fleste Linux-distribusjoner inkluderer bash-skallet som standard, men du kan også bytte til et annet skallmiljø. Zsh er et spesielt populært alternativ, og det finnes andre skall, som aske, dash, fisk og tcsh. Men hva er forskjellen, og hvorfor er det så mange?

    Hva gjør skjell?

    Når du logger på kommandolinjen eller starter et terminalvindu på Linux, starter systemet shellprogrammet. Shells tilbyr en standard måte å utvide kommandolinjemiljøet på. Du kan bytte ut standardskallet til en annen, hvis du vil.

    Det første skallmiljøet var Thompson Shell, utviklet hos Bell Labs og utgitt i 1971. Shell-miljøer har bygd på konseptet siden, og har lagt til en rekke nye funksjoner, funksjonalitet og forbedringer av hastigheten..

    For eksempel tilbyr Bash kommando- og filnavnet, avanserte skriptfunksjoner, en kommandobeskrivelse, konfigurerbare farger, kommandoaliaser og en rekke andre funksjoner som ikke var tilgjengelige tilbake i 1971 da det første skallet ble utgitt.

    Skallet brukes også i bakgrunnen av ulike systemtjenester. Linux distribusjoner inkluderer mange funksjoner skrevet som shell skript. Disse skriptene er kommandoer og andre avanserte shell scripting funksjoner går gjennom shell miljøet.

    Skjell som fører opp til Bash: sh, csh, tsh og ksh

    Den mest fremtredende progenitoren til moderne skall er Bourne-skallet - også kjent som "sh" - som ble oppkalt etter sin skaper Stephen Bourne som jobbet på AT & Ts Bell Labs. Utgitt i 1979 ble det standard kommandotolk i Unix på grunn av dets støtte for kommandosubstitusjon, piping, variabler, tilstandstesting og looping, sammen med andre funksjoner. Det ga ikke mye tilpasning for brukere, og støttet ikke slike moderne niceties som aliaser, kommandotilfylling og skallfunksjoner (selv om denne siste til slutt ble lagt til).

    C-skallet, eller "csh", ble utviklet på slutten av 1970-tallet av Bill Joy ved University of California, Berkley. Den la til mange interaktive elementer som brukerne kunne kontrollere sine systemer, som aliaser (snarveier for lange kommandoer), jobbstyringsevner, kommandog History og mer. Det ble modellert av C-programmeringsspråket, som selve Unix-operativsystemet ble skrevet inn. Dette innebar også at brukerne av Bourne-skallet måtte lære C slik at de kunne legge inn kommandoer i den. I tillegg hadde csh ganske mange feil som måtte hammeres ut av brukere og skapere likt over en stor periode. Folk endte opp med å bruke Bourne-skallet for skript fordi det håndterte ikke-interaktive kommandoer bedre, men fast med C-skallet for normal bruk.

    Over tid løst mange mennesker feil og lagde funksjoner til C-skallet, som kulminerte i en forbedret versjon av csh kjent som "tcsh". Men csh var fortsatt standard i Unix-baserte datamaskiner, og hadde lagt til noen ikke-standardfunksjoner. David Korn fra Bell Labs jobbet på KornShell, eller "ksh", som forsøkte å forbedre situasjonen ved å være baklengs-kompatibel med Bourne-skallets språk, men legge til mange funksjoner fra csh-skallet. Den ble utgitt i 1983, men under en proprietær lisens. Det var ikke gratis programvare før 2000-tallet, da den ble utgitt under ulike open source-lisenser.

    Fødsel av bash

    Det bærbare operativsystemgrensesnittet for Unix, eller POSIX, var et annet svar på de hektiske, proprietære csh-implementasjonene. Den har opprettet en standard for kommandostolkning (blant annet) og til slutt speilet mange av funksjonene i KornShell. Samtidig forsøkte GNU-prosjektet å lage et gratis, Unix-kompatibelt operativsystem. GNU-prosjektet utviklet et gratis programvareskall for å være en del av sitt gratis operativsystem og kalt det "Bourne Again Shell" eller "bash".

    Bash har blitt forbedret i flere tiår siden den første utgivelsen i 1989, men det er fortsatt standardskallet på de fleste Linux-distribusjoner i dag. Det er også standardskallet på Apples MacOS, og er tilgjengelig for installasjon på Microsofts Windows 10.

    Nyere skjell: aske, dash, zsh og fisk

    Mens Linux-fellesskapet har avgjort på Bash i årene siden, ble utviklere ikke sluttet å skape nye skall når Bash ble først utgitt for 28 år siden.

    Kenneth Almquist opprettet en Bourne shell klone kjent som Almquish skall, A Shell, "aske", eller noen ganger bare "sh". det var også POSIX-kompatibelt og ble standardskallet i BSD, en annen grense av Unix. Askeskallet er mer lett enn bash, noe som gjør det populært i innebygde Linux-systemer. Hvis du har en rotfestet Android-telefon med BusyBox installert - eller en annen enhet med BusyBox-pakken med programvare, bruker den kode fra asken.

    Debian utviklet et skallmiljø basert på aske og kalte det "dash". Den er designet for å være POSIX-kompatibel og lett, så den er raskere enn Bash, men vil ikke ha alle funksjonene. Ubuntu bruker dash shell som standard shell for ikke-interaktive oppgaver, påskynde shell skript og andre oppgaver som kjører i bakgrunnen. Ubuntu bruker fortsatt bash for interaktive skjell, men brukerne har fortsatt det fullverdige interaktive miljøet.

    En av de mest populære nyere skallene er Z-skallet, eller "zsh". Opprettet av Paul Falstad i 1990, er zsh et Bourne-stil skall som inneholder funksjonene du finner i bash, pluss enda mer. For eksempel har zsh stavekontroll, evnen til å se på pålogginger / logouts, noen innebygde programmeringsfunksjoner som bytecode, støtte for vitenskapelig notasjon i syntaks, gir mulighet for flytende poeng-aritmetikk og flere funksjoner.

    Et annet nyere skall er Friendly Interactive Shell, eller "fish", utgitt i 2005. Den har en unik kommandolinjens syntaks som er designet for å være litt enklere å lære, men er ikke avledet fra enten Bourne-skallet eller C-skallet. Det er en interessant ide, men det du lærer gjennom å bruke fisk, hjelper ikke nødvendigvis deg med å bruke bash og andre Bourne-avledede skall.

    Hvilken bør du velge? (og hvorfor Zsh er populær)

    Du trenger ikke å velge et skall. Operativsystemet velger standard shell for deg, og det valget er nesten alltid bash. Sett deg foran en Linux-distribusjon - eller til og med en Mac - og du vil nesten alltid ha et bash-shell-miljø. Bash har ganske mange avanserte funksjoner, men du vil sannsynligvis ikke bruke dem med mindre du programmerer shell-skript.

    På innebygde Linux-systemer eller BSD-systemer, vil du ende opp med askeskallet. Men aske er et Bourne-basert skall og er stort sett kompatibelt med bash. Eventuell kunnskap du har fra å bruke bash vil overføre til å bruke et ask eller skjermhull, selv om noen avanserte skriptfunksjoner ikke er tilgjengelige i dette lette skallet.

    Nesten hvert skall du møter er Bourne-basert og fungerer på samme måte, inkludert zsh.

    Det er derfor zsh er populært. Dette nyere skallet er kompatibelt med bash, men inneholder flere funksjoner. Zsh-skallet tilbyr innebygd stavekontroll, forbedret kommandolinjeutførelse, lastbare moduler som fungerer som plugin-moduler for skallet ditt, globale aliaser som lar deg alias filnavn eller noe annet på kommandolinjen i stedet for bare kommandoer, og mer tema støtte. Det er som bash, men med mange tillegg, ekstra funksjoner og konfigurerbare alternativer du kan sette pris på hvis du bruker mye tid på kommandolinjen.

    Hvis du er kjent med bash, kan du bytte til zsh uten å lære en annen syntaks - du får bare ekstra funksjoner. hvis du er kjent med zsh, kan du bytte til bash uten å lære et annet syntaks - du vil bare ikke ha tilgang til de funksjonene.

    "Oh My ZSH" er et verktøy som hjelper deg lettere å aktivere zsh-plugin-moduler og bytte mellom premade temaer, raskt tilpasse ditt zsh-skjerm uten å bruke timer til å tilpasse ting.

    Det er også andre skaller. For eksempel er tcsh-skallet fortsatt rundt og er fortsatt et alternativ. FreeBSD bruker tsch som standard rotskjell og aske som standard interaktivt skall. Hvis du bruker C programmering regelmessig, kan tsch være bedre egnet for deg. Det er imidlertid ikke nært som vanlig brukt som bash eller zsh.

    Hvordan bytte mellom skall

    Det er enkelt å bytte til et nytt skall for å prøve det. Bare installer skallet fra Linux-distribusjonens pakkeleder og skriv inn kommandoen for å starte skallet.

    For eksempel, la oss si at du vil prøve zsh på Ubuntu. Du vil kjøre følgende kommandoer for å installere og deretter starte den:

    sudo apt install zsh zsh

    Du vil da sitte på et zsh-skall. Skriv " exit "På skallet for å forlate det og gå tilbake til ditt nåværende skall.

    Dette er bare midlertidig. Når du åpner et nytt terminalvindu eller logger på systemet på kommandolinjen, ser du standardskallet. For å endre skallet du ser når du logger på, kjent som ditt påloggingsskall, kan du vanligvis bruke chsh , eller "Change Shell", kommando.

    For å bruke denne kommandoen må du først finne hele banen til skallet ditt med hvilken kommando. For eksempel, la oss si at vi ønsket å bytte til zsh-skallet. Vi ville kjøre følgende kommando:

    hvilken zsh

    På Ubuntu forteller dette oss at zsh binær lagres på / usr / bin / zsh.

    Kjør følgende kommando, skriv inn passordet ditt, og du blir bedt om å velge et nytt påloggingsskall:

    chsh

    I følge kommandoen ovenfor skulle vi gå inn / Usr / bin / zsh . Zsh-skallet ville da være vår standard til vi kjørte chsh kommandoen og endret den tilbake.