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

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

    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 multe?

    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 de coajă a fost Thompson Shell, dezvoltat la Bell Labs și lansat în 1971. Mediile Shell au construit pe acest concept încă de atunci, adăugând o varietate de caracteristici noi, funcționalitate și îmbunătățiri de viteză.

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

    Carcasa 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 coajă trec prin mediul shell.

    Shell-urile care conduc până la Bash: sh, csh, tsh și ksh

    Cea mai proeminentă progenitoare a cojilor moderni este cochilia Bourne - cunoscută și sub denumirea de "sh" - care a fost numită după creatorul său, Stephen Bourne, care a lucrat la Laboratoarele Bell AT & T. Lansat în 1979, a devenit comandant-interpret implicit în Unix, datorită suportului său pentru înlocuirea comenzilor, conductelor, variabilelor, testării condițiilor și looping-ului, împreună cu alte caracteristici. Nu a oferit prea multe personalizări pentru utilizatori și nu a susținut atâtea priceperi moderne, cum ar fi aliasurile, completarea comenzilor și funcțiile shell (deși ultima a fost adăugată ulterior).

    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 locurilor de muncă, istoria comenzilor și multe altele. Acesta a fost modelat în afara limbajului de programare C, în care a fost scris sistemul de operare Unix. Acest lucru a însemnat, de asemenea, că utilizatorii coajă Bourne trebuiau să învețe C, astfel încât să poată introduce comenzi în el. În plus, csh avea câteva bug-uri care trebuiau să fie împrăștiate de utilizatori și 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 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 bashului

    Interfața de sistem de operare portabilă pentru Unix sau POSIX a fost un alt răspuns la implementările hicheale de tip csh. 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 încerca 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 gratuit ș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 standard pe majoritatea distribuțiilor Linux astăzi. Este, de asemenea, shell-ul implicit pe macOS-ul Apple, și este disponibil pentru instalarea pe Microsoft 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 au încetat să creeze noi cochilii când Bash a fost lansat pentru prima dată acum 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 compatibil POSIX și a devenit shell-ul implicit în BSD, o altă ramură a Unix-ului. Coaja de cenușă este mai ușoară decât bash, ceea ce o face populară în sistemele Linux integrate. 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 shell-ul drept shell-ul său 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ă, abilitatea de a urmări log-urile / logout-urile, unele funcții de programare încorporate, cum ar fi bytecode, suport pentru notație ș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ă pentru a fi ușor de învățat, dar nu derivă din cochilia Bourne sau shell-ul C. Este o idee interesantă, dar ceea ce învățați prin folosirea peștilor nu vă va ajuta în mod necesar să utilizați bash și alte scoici Bourne.

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

    Nu aveți nevoie să alegeți o cochilie. Sistemul tău de operare îți alege shell-ul implicit pentru tine, și alegerea 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 de shell bash. Bash are câteva caracteristici avansate, dar probabil că nu le veți folosi decât dacă programați scripturile shell.

    Pe sistemele încorporate Linux sau sistemele BSD, veți termina cu coaja de cenușă. Dar cenușa este o coajă pe bază de Bourne și este în mare măsură compatibilă cu bash. Orice cunoștințe pe care le aveți de la utilizarea bash se va transfera folosind o coajă de cenușă sau bordură, deși unele caracteristici avansate de scripting 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 de linie de comandă îmbunătățită, 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 comenzi doar; 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 câștiga doar caracteristici 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ându-vă rapid shell-ul dvs. zsh fără a petrece ore întregi.

    Există și alte cochilii. De exemplu, carcasa 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 programarea C regulat, tsch ar putea fi o potrivire mai bună pentru dumneavoastră. Cu toate acestea, nu este niciunde în apropiere, ca de obicei folosit ca bash sau zsh.

    Cum să comutați între Shells

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

    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ș fi așezat apoi într-o coajă zsh. Tip " Ieșire "La cochilie să o părăsiți și să reveniți la cochilia dvs. actuală.

    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 shell-ul dvs. implicit. Pentru a schimba shell-ul pe care îl vedeți când vă semnați ca shell-ul de conectare - puteți utiliza în general CHSH , sau comanda "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 conectare:

    CHSH

    Conform comenzii de mai sus, am intrat / Usr / bin / zsh . În mod normal, shell-ul zsh ar fi implicit până când am pornit CHSH comandă și a schimbat-o înapoi.