Hvad er forskellen mellem Bash, Zsh og andre Linux Shells?
De fleste Linux-distributioner omfatter som standard bash-skalen, men du kan også skifte til et andet shell-miljø. Zsh er et særligt populært alternativ, og der er andre skaller, som aske, dash, fisk og tcsh. Men hvad er forskellen, og hvorfor er der så mange?
Hvad gør skaller?
Når du logger ind på kommandolinjen eller starter et terminalvindue på Linux, starter systemet shellprogrammet. Skaller tilbyder en standard måde at udvide kommandolinjemiljøet på. Du kan bytte standardskallen til en anden, hvis du vil.
Det første shell miljø var Thompson Shell, der blev udviklet hos Bell Labs og udgivet i 1971. Shell-miljøer har siden bygget op på konceptet og tilføjet en række nye funktioner, funktionalitet og hastighedsforbedringer..
Bash tilbyder f.eks. Kommando- og filnavnet, avancerede scriptfunktioner, en kommandobeskrivelse, konfigurerbare farver, kommandoaliaser og en række andre funktioner, der ikke var tilgængelige igen i 1971, da den første skal blev frigivet.
Skallen bruges også i baggrunden af forskellige systemtjenester. Linux distributioner omfatter mange funktioner skrevet som shell scripts. Disse scripts er kommandoer og andre avancerede shell scripting funktioner løber gennem shell miljøet.
Skaller, der fører op til Bash: sh, csh, tsh og ksh
Den mest fremtrædende forfædler af moderne skaller er Bourne-skallen - også kendt som "sh" - som blev opkaldt efter sin skaber Stephen Bourne, der arbejdede på AT & T's Bell Labs. Udgivet i 1979 blev det standard kommandotolk i Unix på grund af dets støtte til kommandosubstitution, piping, variabler, tilstandstestning og looping sammen med andre funktioner. Det gav ikke meget tilpasning til brugere, og understøttede ikke sådanne moderne nicetier som aliaser, kommandoudførelse og shellfunktioner (selvom sidstnævnte sidst blev tilføjet).
C-shell, eller "csh", blev udviklet i slutningen af 1970'erne af Bill Joy ved University of California, Berkley. Det tilføjede en masse interaktive elementer, som brugere kunne styre deres systemer, som aliaser (genveje til lange kommandoer), jobstyringsevner, kommandobeskrivelse og meget mere. Den blev modelleret ud fra C-programmeringssproget, som selve Unix-operativsystemet blev skrevet i. Dette betød også, at brugere af Bourne-skalen skulle lære C, så de kunne indtaste kommandoer i den. Derudover havde csh et par fejl, der skulle hæves af både brugere og skabere over en stor periode. Folk endte med at bruge Bourne-skalen til scripts, fordi det håndterede ikke-interaktive kommandoer bedre, men fast med C-skalen til normal brug.
Over tid satte mange mennesker fejl i og tilføjede funktioner til C-skalen, hvilket kulminerede i en forbedret version af csh kendt som "tcsh". Men csh var stadig standard i Unix-baserede computere og havde tilføjet nogle ikke-standardfunktioner. David Korn fra Bell Labs arbejdede på KornShell, eller "ksh", som forsøgte at forbedre situationen ved at være baglæns-kompatibel med Bourne-skalens sprog, men tilføjede mange funktioner fra csh-skalen. Den blev udgivet i 1983, men under en proprietær licens. Det var ikke fri software indtil 2000'erne, da den blev frigivet under forskellige open source-licenser.
Fødsel af bash
Portable Operating System Interface til Unix eller POSIX var et andet svar på de hektiske proprietære csh implementeringer. Det har med succes skabt en standard for kommandostolkning (blandt andet) og afspejler i sidste ende mange af funktionerne i KornShell. Samtidig forsøgte GNU Project at oprette et gratis, Unix-kompatibelt operativsystem. GNU Project udviklede en gratis software shell til at være en del af det frie operativsystem og kaldte det "Bourne Again Shell" eller "bash".
Bash er blevet forbedret i årtier siden sin første udgivelse i 1989, men det er stadig standardskallen på de fleste Linux-distributioner i dag. Det er også standardskallen på Apples MacOS, og den er tilgængelig til installation på Microsofts Windows 10.
Nyere skaller: aske, dash, zsh og fisk
Mens Linux-fællesskabet har afgjort på Bash i årene siden, ophørte udviklere ikke med at oprette nye skaller, da Bash først blev udgivet for 28 år siden.
Kenneth Almquist skabte en Bourne shell klon kendt som Almquish shell, A Shell, "aske", eller nogle gange bare "sh". det var også POSIX-kompatibelt og blev standardskallen i BSD, en anden gren af Unix. Askeskallen er mere let end bash, hvilket gør den populær i indlejrede Linux-systemer. Hvis du har en rodfæstet Android-telefon med BusyBox installeret - eller en anden enhed med BusyBox-pakken med software - bruger den kode fra aske.
Debian udviklede et shell miljø baseret på aske og kaldte det "dash". Den er designet til at være POSIX-kompatibel og letvægts, så den er hurtigere end Bash, men vil ikke have alle dens funktioner. Ubuntu bruger dash shell som standard shell til ikke-interaktive opgaver, fremskynde shell scripts og andre opgaver, der kører i baggrunden. Ubuntu bruger stadig bash til interaktive skaller, så brugerne har stadig det komplette interaktive miljø.
Et af de mest populære nyere skaller er Z shell eller "zsh". Oprettet af Paul Falstad i 1990, er zsh en Bourne-stil shell, der indeholder de funktioner, du finder i bash, plus endnu mere. For eksempel har zsh stavekontrol, evnen til at se på logins / logouts, nogle indbyggede programmeringsfunktioner som bytecode, understøttelse af videnskabelig notation i syntax, giver mulighed for flydende aritmetik og flere funktioner.
En anden nyere shell er Friendly Interactive Shell eller "Fish", der blev udgivet i 2005. Det har en unik kommandolinje syntaks, der er designet til at være lidt lettere at lære, men er ikke afledt af enten Bourne shell eller C shell. Det er en interessant ide, men hvad du lærer ved at bruge fisk, vil ikke nødvendigvis hjælpe dig med at bruge bash og andre Bourne-afledte skaller.
Hvilket bør du vælge? (og hvorfor Zsh er populær)
Du behøver ikke at vælge en skal. Dit operativsystem vælger din standard shell til dig, og det valg er næsten altid bash. Sæt dig foran en Linux-distribution - eller endda en Mac - og du vil næsten altid have et bash shell miljø. Bash har et par avancerede funktioner, men du vil nok ikke bruge dem, medmindre du programmerer shell scripts.
På indlejrede Linux-systemer eller BSD-systemer slutter du med askeskallen. Men aske er en Bourne-baseret skal og er stort set kompatibel med bash. Enhver viden, du har fra at bruge bash, overføres til brug af en ask eller en dash shell, selv om nogle avancerede scripting-funktioner ikke er tilgængelige i denne lette skal.
Næsten hver skal du møder er Bourne-baserede og fungerer på samme måde, herunder zsh.
Derfor er zsh populært. Denne nyere shell er kompatibel med bash, men indeholder flere funktioner. Zsh-shell'en indeholder indbygget stavekorrektion, forbedret kommandolinjeafslutning, indlæste moduler, der fungerer som plug-ins til din shell, globale aliaser, der giver dig mulighed for at alias filnavne eller noget andet på kommandolinjen i stedet for bare kommandoer og mere tema støtte. Det er ligesom bash, men med mange ekstrafunktioner, ekstra funktioner og konfigurerbare indstillinger, som du måske vil sætte pris på, hvis du bruger meget tid på kommandolinjen.
Hvis du er bekendt med bash, kan du skifte til zsh uden at lære en anden syntaks - du får bare ekstra funktioner. hvis du er bekendt med zsh, kan du skifte til bash uden at lære en anden syntaks - du vil bare ikke få adgang til disse funktioner.
"Oh My ZSH" er et værktøj, der hjælper dig lettere at aktivere zsh-plug-ins og skifte mellem præmade temaer, hurtigt tilpasse dit zsh-shell uden at bruge timer til at tilpasse ting.
Der er også andre skaller. For eksempel er tcsh-skalen stadig rundt og stadig en mulighed. FreeBSD bruger tsch som standard root shell og aske som standard interaktive shell. Hvis du bruger C-programmeringen regelmæssigt, kan tsch være bedre egnet til dig. Det er dog ikke så tæt som almindeligt anvendt som bash eller zsh.
Sådan skifter du mellem skaller
Det er nemt at skifte til en ny shell for at prøve det. Du skal bare installere skalen fra din Linux-distributionens pakkehåndtering og skrive kommandoen for at starte shell.
Lad os f.eks. Sige, at du vil prøve Zsh på Ubuntu. Du vil køre følgende kommandoer for at installere og derefter starte det:
sudo apt install zsh zsh
Du vil så sidde på en zsh-shell. Type " Afslut
"På skallen for at forlade den og vende tilbage til din nuværende shell.
Dette er bare midlertidigt. Når du åbner et nyt terminalvindue eller logger ind på dit system på kommandolinjen, vil du se din standardskal. Hvis du vil ændre skallen, ser du, når du logger ind, kendt som din login shell. Du kan generelt bruge CHSH
, eller "Change Shell", kommando.
For at bruge denne kommando skal du først finde den fulde sti til din shell med hvilken kommando. Lad os f.eks. Sige, at vi ønskede at skifte til zsh-shell. Vi ville køre følgende kommando:
hvilken zsh
På Ubuntu fortæller dette os, at zsh binæret er gemt på / usr / bin / zsh.
Kør følgende kommando, indtast dit kodeord, og du bliver bedt om at vælge en ny login shell:
CHSH
I henhold til ovenstående kommando ville vi indtaste / Usr / bin / zsh
. Zsh-skalen ville da være vores standard, indtil vi kørte CHSH
kommandoen og ændret den tilbage.