22Jul
De flesta Linux-distribueringar inkluderar bash-skalet som standard, men du kan också byta 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 Shells?
När du loggar in på kommandoraden eller startar ett terminalfönster på Linux startar systemet skalprogrammet. 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ön var Thompson Shell, utvecklad hos 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 förbättringar av hastigheten.
Bash erbjuder till exempel kommando- och filnamn, avancerade skriptfunktioner, kommandoradshistorik, konfigurerbara färger, kommandaliaser 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 fram till Bash: sh, csh, tsh och ksh
Den mest framträdande stamföremannen av moderna skal är Bourne-skalet - även känt som "sh" - som namngavs efter sin skapare Stephen Bourne som arbetade på AT & T BellLabs. Frigjord 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 senast till sist 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 aliaser( genvägar för långa kommandon), arbetshanteringsförmågor, kommandoradshistorik och mycket mer. Det modellerades av C-programmeringsspråket, som Unix-operativsystemet själv skrevs in. Detta innebar också att Bourne-skalet skulle behöva 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 likadant 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 kallas "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. Det 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 kan användas för installation på Microsofts Windows 10.
Nyare Shells: aska, dash, zsh och fisk
Medan Linux-gemenskapen har avgjort på Bash under åren sedan upphörde utvecklarna inteskapar 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 gren 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, använder den kod från ask.
Debian utvecklade en skalmiljö baserad på aska och kallade det "dash".Den är utformad för att vara POSIX-kompatibel och lätt, så den är snabbare än Bash, men har inte alla funktioner. Ubuntu använder dash shell som standard skal 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 / logouts, vissa inbyggda programmeringsfunktioner som bytecode, stöd för vetenskaplig notation i syntax, möjliggör flytande punkträkning och flera 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 är inte härledd från antingen 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 stort sett förenligt med bash. Vilken kunskap du har från att använda bash kommer att överföras till att använda 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ärt. 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, ochmer 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 växla till bash utan att lära sig en annan syntax - du kommer inte bara ha tillgång till de här funktionerna.
"Oh My ZSH" är ett verktyg som hjälper dig att lättare aktivera zsh-plugin-moduler och växla mellan premade teman och 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.
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 det:
sudo apt install zsh zshDu skulle då sitta i ett zsh-skal. Skriv "exit" 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 i ditt system på kommandoraden ser du ditt standardskal. För att ändra skalet ser du när du loggar in som känt som ditt inloggningsskal - du kan vanligtvis använda kommandot chsh eller "Change Shell".
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 zshPå Ubuntu berättar detta oss att zsh binären är lagrad vid /usr/bin/ zsh.
Kör följande kommando, skriv in ditt lösenord och du blir uppmanad att välja ett nytt inloggningsskal:
chshEnligt ovanstående kommando skulle vi ange /usr/bin/ zsh. Zsh-skalet skulle då vara vår standard tills vi körde kommandot chsh och ändrade det tillbaka.