Bash 5.0 uitgebracht met nieuwe functies

De mailinglijst bevestigde onlangs de release van Bash-5.0. En het is opwindend om te weten dat het gebakken is met nieuwe functies en variabel.

Als je Bash 4.4.XX hebt gebruikt, zul je zeker de vijfde grote release van Bash leuk vinden.

De vijfde release richt zich op nieuwe shell-variabelen en een groot aantal grote bugfixes met een revisie. Het introduceert ook een aantal nieuwe functies samen met enkele incompatibele wijzigingen tussen bash-4.4 en bash-5.0.

Hoe zit het met de nieuwe functies?

De mailinglijst verklaart de bug opgelost in deze nieuwe release:

Deze versie lost een aantal openstaande bugs op in bash-4.4 en introduceert verschillende nieuwe functies. De meest significante bugfixes zijn een revisie van hoe nameref-variabelen oplossen en een aantal potentiële out-of-bounds geheugenfouten ontdekt via fuzzing. Er zijn een aantal wijzigingen in de uitbreiding van [e-mailbeveiligd] en $ * in verschillende contexten waarbij woordsplitsing niet wordt uitgevoerd om te voldoen aan een standaardstandaard van Posix en aanvullende wijzigingen om hoekgevallen op te lossen voor Posix-conformiteit.

Het introduceert ook enkele nieuwe functies. Volgens de release-opmerking zijn dit de meest opvallende nieuwe functies zijn verschillende nieuwe shell-variabelen:

De BASH_ARGV0, EPOCHSECONDS en EPOCHREALTIME. De ingebouwde 'geschiedenis' kan reeksen geschiedenisitems verwijderen en begrijpt negatieve argumenten als offsets aan het einde van de geschiedenislijst. Er is een optie om lokale variabelen de waarde van een variabele met dezelfde naam over te laten nemen in een voorgaande scope. Er is een nieuwe shell-optie die, wanneer ingeschakeld, ervoor zorgt dat de shell probeert om associatieve array-subscripts slechts eenmaal uit te vouwen (dit is een probleem wanneer ze worden gebruikt in rekenkundige uitdrukkingen). De shelloptie 'globasciiranges' is nu standaard ingeschakeld; het kan standaard tijdens de configuratietijd worden uitgeschakeld.

Hoe zit het met de veranderingen tussen Bash-4.4 en Bash-5.0?

Het updatelogboek vermeldde de incompatibele wijzigingen en de ondersteunde leesversiegeschiedenis. Hier is wat het zei:

Er zijn een paar incompatibele wijzigingen tussen bash-4.4 en bash-5.0. De wijzigingen in hoe nameref-variabelen worden opgelost, betekent dat sommige vormen van gebruik van namerefs zich anders gedragen, hoewel ik heb geprobeerd de compatibiliteitsproblemen te minimaliseren. Standaard stelt de shell alleen BASH_ARGC en BASH_ARGV in bij het opstarten als de uitgebreide foutopsporingsmodus is ingeschakeld; het was een overzicht dat het onvoorwaardelijk was ingesteld en prestatieproblemen veroorzaakte toen scripts grote aantallen argumenten werden doorgegeven.

Bash kan worden gekoppeld aan een reeds geïnstalleerde Readline-bibliotheek in plaats van de privéversie in de lib / readline, indien gewenst. Alleen readline-8.0 en latere versies kunnen alle symbolen leveren die bash-5.0 vereist; eerdere versies van de Readline-bibliotheek werken niet correct.

Ik geloof dat sommige van de toegevoegde functies / variabelen erg handig zijn. Sommige van mijn favorieten zijn:

  • Er is een nieuwe shell-optie (standaard uitgeschakeld, zonder papieren) om de verzendgeschiedenis in runtime in te schakelen en in te schakelen voor syslog.
  • De shell stelt BASH_ARGC en BASH_ARGV niet automatisch in bij het opstarten, tenzij in de foutopsporingsmodus, zoals de documentatie altijd heeft gezegd, maar zal deze dynamisch maken als een script ze op het hoogste niveau doorverwijst zonder de foutopsporingsmodus te hebben ingeschakeld.
  • De 'geschiedenis' kan nu reeksen van geschiedenisvermeldingen verwijderen met '-d start-end'.
  • Als een niet-interactieve shell met taakcontrole ingeschakeld detecteert dat een voorgrondtaak is gestorven als gevolg van SIGINT, werkt het alsof het de SIGINT heeft ontvangen.
  • BASH_ARGV0: een nieuwe variabele die expandeert naar $ 0 en $ 0 instelt bij toewijzing.

Om de volledige lijst van wijzigingen en functies te bekijken, moet u de post van de mailinglijst raadplegen.

Afsluiten

U kunt uw huidige Bash-versie controleren met behulp van deze opdracht:

 bash - versie 

Het is waarschijnlijker dat Bash 4.4 is geïnstalleerd. Als je de nieuwe versie wilt krijgen, raad ik je aan te wachten op je distributie om deze te kunnen leveren.

Met Bash-5.0 beschikbaar, wat denk je ervan? Gebruik je een alternatief voor bash? Zo ja, zou deze update van gedachten veranderen?

Laat ons je mening weten in de reacties hieronder.

Aanbevolen

Apt commands gebruiken in Linux
2019
NetBSD versie 8.0 uitgebracht met nieuwe functies
2019
Geweldig nieuws! LTS Release van Linux Kernel wordt nu gedurende 6 jaar ondersteund
2019