Bash 5.0 lansat cu noi caracteristici

Configurare noua (How To)

Situatie

Lista de discuții a confirmat recent lansarea lui Bash-5.0. Și este interesant să știți că vine vorba de caracteristici noi și variabile. Ei bine, dacă ați folosit Bash 4.4.XX, vă place cu siguranță cea de-a cincea ediție majoră a lui Bash.

Cea de-a cincea versiune se concentrează pe variabilele de shell noi și o mulțime de corecții majore de erori cu o revizie. De asemenea, introduce câteva caracteristici noi, împreună cu unele schimbări incompatibile între bash-4.4 și bash-5.0.

 

Solutie

Cum rămâne cu noile caracteristici?
Lista de discuții explică bug-ul stabilit în această versiune nouă:

Această versiune stabilește mai multe bug-uri restante în bash-4.4 și introduce câteva caracteristici noi. Corecțiile de erori cele mai semnificative sunt o revizuire a modului în care rezolvă variabilele de măsurare și un număr de erori de memorie potențiale în afara limitelor identificate prin fuzzare. Există o serie de modificări ale extinderii $ @ și $ * în diferite contexte în care divizarea cuvintelor nu este efectuată pentru a se conforma unei interpretări standard a lui Posix și modificări suplimentare pentru rezolvarea cazurilor de colț pentru conformitatea cu Posix.

De asemenea, introduce unele caracteristici noi. În conformitate cu nota de lansare, acestea sunt cele mai notabile caracteristici noi sunt mai multe variabile shell:

BASH_ARGV0, EPOCHSECONDS și EPOCHREALTIME. Istoricul “încorporat” poate elimina intervalele intrărilor de istoric și înțelege argumentele negative ca si compensări de la sfârșitul listei de istoric. Există o opțiune pentru a permite variabilelor locale să moștenească valoarea unei variabile cu același nume într-un domeniu anterior. Există o nouă opțiune de shell care, atunci când este activată, face ca shell-ul să încerce să extindă indiciile matrice asociative o singură dată (aceasta este o problemă atunci când sunt utilizate în expresii aritmetice). Opțiunea shell globasciiranges este acum activată în mod implicit; acesta poate fi dezactivat în mod prestabilit la ora de configurare.

Ce se întâmplă între schimbările dintre Bash-4.4 și Bash-5.0?
Jurnalul de actualizare menționat despre modificările incompatibile și istoricul versiunilor readline acceptate. Iată ce a spus:

Există câteva schimbări incompatibile între bash-4.4 și bash-5.0. Schimbările la modul în care sunt rezolvate variabilele nameref înseamnă că unele utilizări ale namerefs se vor comporta diferit, deși am încercat să minimalizez problemele de compatibilitate. Implicit, shell-ul stabilește numai BASH_ARGC și BASH_ARGV la pornire dacă este activat modul de depanare extins; a fost o supraveghere că a fost stabilită necondiționat și a provocat probleme de performanță atunci când scripturile au fost transmise un număr mare de argumente.

Bash poate fi legat de o bibliotecă Readline deja instalată și nu de versiunea privată în lib / readline, dacă se dorește. Doar readline-8.0 și versiunile ulterioare sunt capabile să furnizeze toate simbolurile pe care bash-5.0 le cere; versiunile anterioare ale bibliotecii Readline nu vor funcționa corect.

Cred că unele dintre caracteristicile / variabilele adăugate sunt foarte utile. Câteva dintre preferatele mele sunt:

Există o opțiune nouă (dezactivată implicit, nedocumentată) pentru a activa și a dezactiva trimiterea istoricului la syslog în timpul rulării.
Nu setează automat BASH_ARGC și BASH_ARGV la pornire decât dacă se află în modul de depanare, după cum a spus întotdeauna documentația, dar le va crea dinamic dacă un script le trimite la nivelul de vârf fără a avea activat modul de depanare.
Istoricul poate șterge acum intervale de intrări de istoric folosind ‘-d start-end’.
Dacă o coajă non-interactivă cu funcția de control activată detectează că o lucrare din planșetă a decedat din cauza SIGINT, se comportă ca și cum ar primi SIGINT.
BASH_ARGV0: o nouă variabilă care se extinde la 0 $ și stabilește $ 0 pentru atribuire.

Tip solutie

Permanent

Voteaza

(9 din 20 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?