Na bijna drie jaar ontwikkeling is de nieuwe versie van de GNU Bash command interpreter 5.3 uitgebracht, die standaard wordt gebruikt in de meeste Linux-distributies. Tegelijkertijd is er een release van de readline bibliotheek 8.3, die in bash wordt gebruikt voor het organiseren van het bewerken van de commandoregel.
Belangrijke verbeteringen omvatten:
- Nieuwe vormen van commando-substitutie ‘${ command; }’ en ‘${|command;}’ zijn geïmplementeerd, waardoor de uitvoer van een commando kan worden onderschept zonder een aparte child-proces aan te maken en zonder gebruik te maken van unnamed pipes. De resultaten van de commando-uitvoering worden gegeven als de resultaatvervanging of worden opgeslagen in de variabele REPLY.
- Een nieuwe variabele GLOBSORT is toegevoegd, die de sorteermethode bij het aanvullen van het bestandspad bepaalt. Bijvoorbeeld, er kan worden gekozen voor sorteren op naam (GLOBSORT=name), grootte (GLOBSORT=size) of wijzigingstijd (GLOBSORT=mtime), en ook de volgorde van sorteren kan rechtstreeks (van klein naar groot) of omgekeerd (van groot naar klein) zijn (bijvoorbeeld, bij ‘GLOBSORT=-size’ worden de grootste bestanden eerst weergegeven).
- Aan de ingebouwde commando ‘compgen’ is de optie ‘-V varname’ toegevoegd om de gegenereerde aanvullingen op te slaan in een variabele in plaats van deze naar de standaardoutput te sturen.
- Aan de ingebouwde commando ‘read’ is de optie ‘-E’ toegevoegd, die bij het invoeren van gegevens de readline bibliotheek gebruikt met regels voor autocompletion van bash-constructies.
- Aan de ingebouwde commando ‘source’ is de optie ‘-p PATH’ toegevoegd, waarmee de zoeklijst in bestandsroutes kan worden overschreven (de opgegeven waarde wordt gebruikt in plaats van de variabele $PATH).
- De broncode is aangepast aan de C23-standaard. De mogelijkheid om te worden gebouwd door compilers in ‘K&R C’-modus (stijl die overeenkomt met de beschrijving van de C-taal in het boek ‘The C Programming Language’ van Kernighan en Ritchie) is beëindigd.
- De ingebouwde commando ‘umask’ is volledig compatibel gemaakt met de POSIX-specificaties.
- Een laadbare commando ‘kv’ is toegevoegd, die een associatieve array vormt op basis van een gegevensset in het formaat ‘sleutel waarde’.
- Een laadbare commando ‘strptime’ is toegevoegd, die een tekstuele representatie van datum en tijd omzet in Epoch-tijd (aantal seconden sinds 1 januari 1970).
- Een laadbare commando ‘fltexpr’ is toegevoegd, waarmee rekenkundige bewerkingen met drijvende komma’s kunnen worden uitgevoerd, vergelijkbaar met de commando let.
- Er is een dynamisch ingestelde variabele BASH_MONOSECONDS toegevoegd, die de huidige waarde van de systeem monotone klok bevat, die continu toeneemt, zelfs wanneer de tijd naar een verleden waarde wordt gewijzigd.
- In POSIX-modus wordt de vergelijking van strings in de opdracht 'test', met gebruik van de operatoren '', nu uitgevoerd met inachtneming van de huidige locale.
- In de opdracht 'bind -x' is het toegestaan om de toets en de oproepende opdracht door een spatie te splitsen, mits de reeks tussen dubbele aanhalingstekens staat.
- In de nieuwe versie van Readline is een optie 'search-ignore-case' toegevoegd voor het zoeken in de geschiedenis zonder rekening te houden met de hoofdlettergevoeligheid. De opdracht 'export-completions' is toegevoegd voor het exporteren van aanvulopties voor verwerking in andere processen. Er is een opdracht 'execute-named-command' toegevoegd voor het uitvoeren van een opdracht wiens naam is verkregen uit de standaardinvoer.
Bron: opennet.ru
