Vad är skillnaden mellan Bash, Zsh och andra Linux Shells?
De flesta Linux-distribueringar inkluderar bash-skalet som standard, men du kan också växla till en annan skalmiljö. Zsh är ett särskilt populärt alternativ, och det finns andra skal, som aska, bindestreck, fisk och tcsh. Men vad är skillnaden, och varför är det så många?
Vad gör skal?
När du loggar in på kommandoraden eller startar ett terminalfönster på Linux startar systemet shellprogrammet. Skal erbjuder ett vanligt sätt att utvidga kommandoradsmiljön. Du kan byta ut standardskalet för en annan, om du vill.
Den första skalmiljöen var Thompson Shell, utvecklad på Bell Labs och släpptes 1971. Shell-miljöer har byggt upp konceptet sedan dess och har lagt till en rad nya funktioner, funktionalitet och hastighetsförbättringar.
Bash erbjuder till exempel kommando- och filnamn, avancerade skriptfunktioner, en kommandoradshistoria, konfigurerbara färger, kommandoaliaser och en mängd andra funktioner som inte var tillgängliga redan 1971 när det första skalet släpptes.
Skalet används också i bakgrunden av olika systemtjänster. Linux-distributioner innehåller många funktioner skrivna som skalskript. Dessa skript är kommandon och andra avancerade skalskriptfunktioner går igenom skalmiljön.
Skal som leder upp till Bash: sh, csh, tsh och ksh
Den mest framträdande stamgruppen för moderna skal är Bourne-skalet - även känt som "sh" - som namngavs efter sin skapare Stephen Bourne som arbetade på AT & T: s Bell Labs. Frigjordes 1979, blev det standardkommandotolkaren i Unix på grund av dess stöd för kommandosubstitution, piping, variabler, tillståndstestning och looping, tillsammans med andra funktioner. Det erbjöd inte mycket anpassning för användarna, och stödde inte sådana moderna nicetier som aliaser, kommandotillverkning och skalfunktioner (även om den här sista senast tillkom).
C-skalet, eller "csh", utvecklades i slutet av 1970-talet av Bill Joy vid University of California, Berkley. Det lade till många interaktiva element som användarna kunde styra sina system, som alias (genvägar för långa kommandon), arbetshanteringsförmågor, kommandoradshistorik och mycket mer. Det modellerades av C-programmeringsspråket, som själva Unix-operativsystemet skrevs in. Detta innebar också att användarna av Bourne-skalet skulle lära C så att de kunde komma in i kommandon i den. Dessutom hade csh en hel del buggar som skulle hamras ut av användare och skapare lika under en stor tidsperiod. Folk slutade använda Bourne-skalet för skript eftersom det hanterade icke-interaktiva kommandon bättre, men fastnade med C-skalet för normal användning.
Över tiden fixade många människor buggar i och lagt till funktioner i C-skalet, som kulminerade i en förbättrad version av csh som kallades "tcsh". Men csh var fortfarande standard i Unix-baserade datorer, och hade lagt till några icke-standardfunktioner. David Korn från Bell Labs arbetade på KornShell, eller "ksh", som försökte förbättra situationen genom att vara bakåtkompatibel med Bourne-skalets språk men lägga till många funktioner från csh-skalet. Den släpptes 1983, men under en licensierad licens. Det var inte fri programvara fram till 2000-talet, när den släpptes under olika open source-licenser.
Födelsen av bash
Den bärbara operativsystemgränssnittet för Unix, eller POSIX, var ett annat svar på de hektiska proprietära csh-implementationerna. Det skapade framgångsrikt en standard för kommandotolkning (bland annat) och så småningom speglade många funktioner i KornShell. Samtidigt försökte GNU-projektet skapa ett gratis, Unix-kompatibelt operativsystem. GNU-projektet utvecklade ett gratis programvaruhölje för att vara en del av sitt fria operativsystem och kallade det "Bourne Again Shell" eller "bash".
Bash har förbättrats under årtiondena sedan dess första utgåva 1989, men det är fortfarande standardskalet på de flesta Linux-distributioner idag. Det är också standardskalet på Apples macOS, och det är tillgängligt för installation på Microsofts Windows 10.
Nyare skalar: aska, bindestreck, zsh och fisk
Medan Linux-gemenskapen har avgjort på Bash under åren sedan upphörde utvecklarna inte att skapa nya skal när Bash släpptes för första gången för 28 år sedan.
Kenneth Almquist skapade en Bourne skalklon som kallas Almquish skal, A Shell, "aska", eller ibland bara "sh". det var också POSIX-kompatibelt och blev standardskalet i BSD, en annan gräns av Unix. Askskalet är lättare än bash, vilket gör det populärt i inbyggda Linux-system. Om du har en rotad Android-telefon med BusyBox installerad - eller någon annan enhet med BusyBox-paketet med programvara - det använder kod från ash.
Debian utvecklade en skalmiljö baserad på aska och kallade det "dash". Den är utformad för att vara POSIX-kompatibel och lätt, så det är snabbare än Bash, men kommer inte att ha alla funktioner. Ubuntu använder dash shell som standardskal för icke-interaktiva uppgifter, påskyndar skalskript och andra uppgifter som körs i bakgrunden. Ubuntu använder fortfarande bash för interaktiva skal, men så har användarna fortfarande en komplett interaktiv miljö.
En av de mest populära nyare skalen är Z-skal, eller "zsh". Skapad av Paul Falstad 1990, är zsh ett Bourne-stilskal som innehåller de funktioner du hittar i bash, plus ännu mer. Till exempel har zsh stavningskontroll, möjligheten att titta på loggar / logouter, vissa inbyggda programmeringsfunktioner som bytecode, stöd för vetenskaplig notation i syntax, möjliggör flytande punkträkning, och fler funktioner.
Ett annat nyare skal är Friendly Interactive Shell eller "Fish", som släpptes 2005. Den har en unik kommandoradssyntax som är utformad för att vara lite lättare att lära, men härrör inte från Bourne-skalet eller C-skalet. Det är en intressant idé, men det du lär dig genom att använda fisk hjälper inte nödvändigtvis dig att använda bash och andra Bourne-härledda skal.
Vilka ska du välja? (och varför Zsh är populär)
Du behöver inte välja ett skal. Ditt operativsystem väljer ditt standardskal för dig, och det valet är nästan alltid bash. Sätt dig framför en Linux-distribution - eller till och med en Mac - och du kommer nästan alltid att ha en bash-skalmiljö. Bash har en hel del avancerade funktioner, men du brukar inte använda dem om du inte programmerar skalskript.
På inbyggda Linux-system eller BSD-system kommer du att sluta med askskalet. Men aska är ett Bourne-baserat skal och är i stor utsträckning förenligt med bash. Vilken kunskap du har från att använda bash kommer att överföras till ett ask- eller dash-skal, även om vissa avancerade skriptfunktioner inte är tillgängliga i detta lätta skal.
Nästan alla skal du möter är Bourne-baserade och fungerar på liknande sätt, inklusive zsh.
Därför är zsh populär. Detta nyare skal är kompatibelt med bash, men innehåller fler funktioner. Zsh-skalet erbjuder inbyggd stavningskorrektion, förbättrad kommandoradsfyllning, laddningsbara moduler som fungerar som plugin-moduler för ditt skal, globala aliaser som låter dig alias filnamn eller något annat på kommandoraden istället för bara kommandon, och mer tema stöd. Det är som bash, men med många extrafunktioner, ytterligare funktioner och konfigurerbara alternativ du kanske uppskattar om du spenderar mycket tid på kommandoraden.
Om du är bekant med bash kan du växla till zsh utan att lära dig en annan syntax - du får bara extra funktioner. om du är bekant med zsh kan du byta till bash utan att lära sig en annan syntax - du kommer inte bara ha tillgång till de funktionerna.
"Oh My ZSH" är ett verktyg som hjälper dig att lättare aktivera zsh-plugin-moduler och växla mellan premade teman, snabbt anpassa ditt zsh-skal utan att spendera timmar att justera saker.
Det finns också andra skal. Tcsh-skalet är till exempel kvar och är fortfarande ett alternativ. FreeBSD använder tsch som standard root shell och aska som standard interaktivt skal. Om du använder C-programmeringen regelbundet kan tsch passa dig bättre. Det är dock ingenstans lika vanligt som bash eller zsh.
Hur man byter mellan skal
Det är lätt att byta till ett nytt skal för att prova det. Installera bara skalet från din Linux-distributionens pakethanterare och skriv kommandot för att starta skalet.
Till exempel, låt oss säga att du vill försöka zsh på Ubuntu. Du skulle köra följande kommandon för att installera och sedan starta den:
sudo apt install zsh zsh
Du skulle då sitta i ett zsh-skal. Skriv " utgång
"På skalet för att lämna det och återgå till ditt nuvarande skal.
Detta är bara tillfälligt. När du öppnar ett nytt terminalfönster eller loggar in på ditt system på kommandoraden ser du ditt standardskal. För att ändra skalet ser du när du loggar in, känt som ditt inloggningsskal - du kan vanligtvis använda chsh
, eller "Change Shell", kommando.
För att använda det här kommandot måste du först hitta hela sökvägen till ditt skal med vilket kommando. Låt oss till exempel säga att vi ville byta till zsh-skalet. Vi skulle köra följande kommando:
vilken zsh
På Ubuntu berättar detta oss att zsh binären är lagrad på / usr / bin / zsh.
Kör följande kommando, ange ditt lösenord och du blir uppmanad att välja ett nytt inloggningsskal:
chsh
Enligt ovanstående kommando skulle vi ange / Usr / bin / zsh
. Zsh-skalet skulle då vara vår standard tills vi sprang chsh
kommandot och ändrat det tillbaka.