22Jul

Care este diferența dintre Bash, Zsh și alte Shell-uri Linux?

click fraud protection

Cele mai multe distribuții Linux includ în mod implicit shell-ul bash, dar puteți comuta și la alt mediu shell. Zsh este o alternativă deosebit de populară, și există și alte cochilii, cum ar fi cenușă, dash, pește și tcsh. Dar care este diferența și de ce sunt atât de mulți?

Ce fac Shells-ul?

Când vă conectați la linia de comandă sau lansați o fereastră terminal pe Linux, sistemul lansează programul shell. Shell-urile oferă o modalitate standard de a extinde mediul liniei de comandă.Puteți schimba shell-ul implicit pentru altul, dacă doriți.

Primul mediu al shell-ului a fost Thompson Shell, dezvoltat la Bell Labs și lansat în 1971. Mediile Shell se bazează pe conceptul de atunci, adăugând o varietate de noi caracteristici, funcționalități și îmbunătățiri ale vitezei.

De exemplu, Bash oferă comanda și finalizarea numelui fișierului, caracteristici avansate de scripting, istoric de comandă, culori configurabile, pseudonimuri de comandă și o varietate de alte caracteristici care nu erau disponibile în 1971 când a fost lansată prima coajă.

instagram viewer

Cochilia este de asemenea utilizată în fundal de diverse servicii de sistem. Distribuțiile Linux includ multe funcții scrise sub formă de script-uri de shell. Aceste scripturi sunt comenzi și alte funcții avansate de scripting pentru shell, care se execută în mediul shell.

Cel mai proeminent progenitor al cochililor moderni este shell-ul Bourne - cunoscut și ca "sh" - care a fost numit după creatorul său, Stephen Bourne, care a lucrat la AT & T's BellLabs. Lansat în 1979, a devenit comandant-interpret implicit în Unix datorită suportului său pentru înlocuirea comenzilor, conductelor, variabilelor, testarea condițiilor și looping-ul, împreună cu alte caracteristici. Nu a oferit prea multe personalizări pentru utilizatori și nu a susținut atâtea priceperi moderne ca aliasuri, completarea comenzilor și funcțiile shell( deși ultimul a fost adăugat în cele din urmă).

C shell-ul, sau "csh", a fost dezvoltat la sfârșitul anilor 1970 de Bill Joy de la Universitatea din California, Berkley. Acesta a adăugat o mulțime de elemente interactive cu care utilizatorii puteau controla sistemele lor, cum ar fi aliasurile( comenzi rapide pentru comenzi lungi), abilitățile de gestionare a posturilor, istoria comenzilor și multe altele. Acesta a fost modelat în afara limbajului de programare C, la care a fost scris și sistemul de operare Unix. Acest lucru a însemnat, de asemenea, că utilizatorii coajă Bourne trebuiau să învețe C pentru ca ei să poată introduce comenzi în el.În plus, csh avea destule bug-uri care trebuiau să fie împrăștiate de utilizatori și de creatori de-a lungul unei perioade lungi de timp. Oamenii au ajuns să folosească shell-ul Bourne pentru scripturi, deoarece au manipulat mai bine comenzile non-interactive, dar au rămas cu coajă C pentru uz normal.

De-a lungul timpului, o mulțime de oameni au rezolvat bug-uri și au adăugat caracteristici în shell-ul C, culminând cu o versiune îmbunătățită a csh-ului cunoscut sub numele de "tcsh".Dar csh era încă implicit în calculatoarele bazate pe Unix și adăugase câteva caracteristici non-standard. David Korn de la Bell Labs a lucrat la KornShell sau "ksh", care a încercat să îmbunătățească situația prin faptul că a fost compatibil înapoi cu limbajul shell-ului Bourne, dar a adăugat multe caracteristici din shell-ul csh. A fost lansat în 1983, dar sub licență de proprietate. Nu a fost software liber până în anii 2000, când a fost lansat sub diverse licențe open-source.

Nașterea bash-ului

Interfața pentru sistemul de operare portabil pentru Unix sau POSIX a fost un alt răspuns la implementările hack-ului propriu-zis. A creat cu succes un standard pentru interpretarea comenzilor( printre altele) și, în cele din urmă, a reflectat o mulțime de caracteristici din KornShell.În același timp, proiectul GNU încearcă să creeze un sistem de operare compatibil cu Unix. Proiectul GNU a dezvoltat o coajă software gratuită pentru a face parte din sistemul său de operare liber și a numit-o "Bourne Again Shell" sau "bash".

Bash a fost îmbunătățit în deceniile de la lansarea sa în 1989, dar este în continuare shell-ul implicit pe majoritatea distribuțiilor Linux astăzi. Este, de asemenea, shell-ul implicit pe macOS-ul Apple și este disponibil pentru instalarea pe Windows 10.

Shell-uri mai noi: cenușă, dash, zsh și pește

În timp ce comunitatea Linux sa stabilit pe Bash în anii de atunci, dezvoltatorii nu s-au opritcreând noi cochilii când Bash a fost lansat pentru prima dată în urmă cu 28 de ani.

Kenneth Almquist a creat o clonă de coajă Bourne, cunoscută sub numele de coajă Almquish, A Shell, "cenușă" sau, uneori, doar "sh".a fost, de asemenea, POSIX compatibil și a devenit coajă implicită în BSD, o altă ramură a Unix. Coaja de cenușă este mai ușoară decât bash, ceea ce o face populară în sistemele încorporate Linux. Dacă aveți un telefon Android rădăcină cu BusyBox instalat - sau orice alt dispozitiv cu suita de software BusyBox - se utilizează codul de la cenușă.

Debian a dezvoltat un mediu shell bazat pe cenușă și la numit "dash".Este proiectat să fie compatibil cu POSIX și ușor, deci este mai rapid decât Bash, dar nu va avea toate caracteristicile sale. Ubuntu folosește shell-ul dash ca shell implicit pentru sarcini non-interactive, accelerarea scripturilor shell și a altor activități care rulează în fundal. Ubuntu utilizează în continuare bash pentru shell-uri interactive, însă utilizatorii au în continuare mediul interactiv complet.

Una dintre cele mai populare cochilii noi este Z shell, sau "zsh".Creat de Paul Falstad în 1990, zsh este o cochilie în stil Bourne care conține caracteristicile pe care le veți găsi în bash, plus multe altele. De exemplu, zsh are verificarea ortografică, capacitatea de a urmări log-urile / logout-urile, unele funcții de programare încorporate, cum ar fi bytecode, suport pentru notația științifică în sintaxă, permite aritmetică în virgulă mobilă și mai multe caracteristici.

O altă coajă mai nouă este Friendly Interactive Shell sau "pește", lansată în 2005. Are o sintaxă unică de linie de comandă proiectată să fie ușor de învățat, dar nu derivă din coajă Bourne sau coajă C.Este o idee interesantă, dar ceea ce învățați prin utilizarea peștilor nu vă va ajuta în mod necesar să utilizați bash și alte cochilii derivate de la Bourne.

Care ar trebui să alegeți?(și de ce Zsh este popular)

Nu este nevoie să alegeți un shell. Sistemul dvs. de operare îți alege shell-ul implicit pentru tine, și această alegere este aproape întotdeauna bash. Stați în fața unei distribuții Linux - sau chiar a unui Mac - și veți avea aproape întotdeauna un mediu shell shell. Bash are câteva caracteristici avansate, dar probabil că nu le veți folosi decât dacă programați scripturile shell.

Pe sistemele Linux sau sistemele BSD încorporate, veți ajunge la coaja de cenușă.Dar cenușa este o coajă pe bază de Bourne și este în mare măsură compatibilă cu bash. Orice cunoaștere pe care o ai de la bash se va transfera la utilizarea unei fraze de cenușă sau bord, deși unele funcții de scripting avansate nu sunt disponibile în această coajă ușoară.

Aproape fiecare coajă pe care o veți întâlni este bazată pe Bourne și funcționează în mod similar - inclusiv zsh.

De aceea zsh este popular. Această coajă mai nouă este compatibilă cu bash, dar include mai multe caracteristici. Schema zsh oferă corecții de ortografie integrate, completare completă a liniei de comandă, module încărcate care funcționează ca plugin-uri pentru shell-ul dvs., aliasuri globale care vă permit să obțineți nume de fișiere alias sau orice altceva de pe linia de comandă în loc de doar comenzi;mai mult suport tematic. Este ca și bash, dar cu o mulțime de extra, caracteristici suplimentare și opțiuni configurabile pe care le-ați putea aprecia dacă petreceți mult timp la linia de comandă.

Dacă sunteți familiarizat cu bash, puteți trece la zsh fără a învăța o sintaxă diferită - veți obține doar funcții suplimentare.dacă sunteți familiarizat cu zsh, puteți trece la bash fără a învăța o sintaxă diferită - pur și simplu nu veți avea acces la aceste caracteristici.

"Oh My ZSH" este un instrument care vă ajută să activați mai ușor plug-in-urile zsh și să comutați între teme premade, personalizând rapid shell-ul dvs. zsh fără a vă aloca ore întregi.

Există și alte cochilii. De exemplu, shell-ul tcsh este încă în jur și este încă o opțiune. FreeBSD folosește tsch ca coajă de rădăcină implicită și cenușă ca shell-ul interactiv implicit. Dacă utilizați în mod regulat programarea C, tsch ar putea fi o potrivire mai bună pentru dvs. Cu toate acestea, nu este nici pe departe la fel de frecvent folosit ca bash sau zsh.

Cum se comută între cochilii

Este ușor să comutați la o coajă nouă pentru al încerca. Doar instalați shell-ul din managerul de pachete al distribuției Linux și tastați comanda pentru lansarea shell-ului.

De exemplu, să presupunem că doriți să încercați zsh pe Ubuntu. Ați rula următoarele comenzi pentru a instala și apoi lansați-o:

sudo apt instalare zsh zsh

Ați fi așezat apoi într-o coajă zsh. Introduceți "ieșire" la coajă pentru al părăsi și a reveni la shell-ul curent.

Acest lucru este doar temporar. Ori de câte ori deschideți o nouă fereastră de terminal sau vă conectați la sistemul dvs. la linia de comandă, veți vedea coșul implicit. Pentru a schimba shell-ul pe care îl vedeți când vă semnați ca shell-ul de conectare - puteți folosi, în general, comanda chsh sau "Change Shell".

Pentru a utiliza această comandă, va trebui mai întâi să găsiți calea completă la shell-ul dvs. cu comanda respectivă.De exemplu, să presupunem că am vrut să ne schimbăm în shell-ul zsh. Am rula următoarea comandă:

care zsh

Pe Ubuntu, acest lucru ne spune că binarul zsh este stocat la /usr/bin/ zsh.

Rulați următoarea comandă, introduceți parola și vi se va solicita să alegeți un nou shell de autentificare:

chsh

Conform comenzii de mai sus, vom introduce /usr/bin/ zsh.În mod implicit, shell-ul zsh va fi implicit până când vom executa comanda chsh și vom schimba înapoi.