Megérkezett a Bash 5.3 stabil kiadása

8/10
A kiadás számos hibát javít, új szolgáltatásokat vezet be és mélyíti a POSIX-kompatibilitást. A fejlesztés fókuszában a stabilitás, a jobb szabványkövetés és a programozhatóság áll.

Néhány nappal az rc2 kiadás bejelentése után a Bash 5.3 végleges kiadása már elérhető a hivatalos GNU FTP szerverről, valamint klónozható a fejlesztői ágról a Git-tárolóból. A stabil kiadás számos újdonságot hoz az előző, 2022-ben megjelent 5.2-es verzióhoz képest, beleértve hibajavításokat, új parancsértelmezési lehetőségeket, valamint a POSIX szabvánnyal való mélyebb összhangot. A forráskód immár a C23 nyelvi szabványnak megfelelően készült, ezáltal megszűnik a támogatás a K&R-stílusú C fordítók számára. A dokumentáció a megszokott formátumokban – PDF, HTML, info, nroff – előformázva is rendelkezésre áll. A hibák jelentésére a bashbug eszköz továbbra is rendelkezésre áll.

Megérkezett a Bash 5.3 stabil kiadása

Újítások a parancsértelmezőben és Readline-ban

Az egyik legfontosabb újdonság a parancshelyettesítés új szintaxisa, amely lehetővé teszi a parancs közvetlen végrehajtását a jelenlegi shell-környezetben, külön folyamat indítása nélkül. Ennek két formája is elérhető: az egyik a REPLY változóba menti a kimenetet, a másik közvetlenül adja vissza azt. A GLOBSORT változó segítségével a globális fájlnevek kiterjesztésének sorrendje szabályozható különféle rendezési szempontok szerint, mint például név, méret vagy módosítási idő. A compgen parancs mostantól képes a generált kimenetet egy megadott változóba menteni ahelyett, hogy a szabványos kimenetre írná. A read beépített parancs új -E opciója readline-alapú bevitelre képes programozható kiegészítéssel, a source új -p PATH kapcsolója pedig a $PATH helyett egy explicit megadott útvonal alapján keres fájlokat.

A printf parancs több változáson is átesett: új szintaxissal támogatja a %ls és %lc formátumokat többbájtos helyi beállítás esetén, valamint az alternate form kapcsolóval egységesen idézőjelezett kimenetet biztosít a %q és %Q esetén. A trap parancs új -P kapcsolója megjeleníti a jelekhez társított műveleteket. A bind, wait, complete, type, test, jobs és command beépített parancsok is finomított viselkedést kaptak. Újdonság a bash_source_fullpath shopt opció is, amely lehetővé teszi, hogy a BASH_SOURCE teljes elérési utat tartalmazzon. A TIMEFORMAT változó pontossága mostantól 6 tizedesjegy lehet. Az új fltexpr betölthető parancs a lebegőpontos műveleteket támogatja a let parancshoz hasonlóan. További új beépülő modul a kv és a strptime. A shell immár felismeri a NULL értékű $PATH változót, és azt a jelenlegi könyvtárként értelmezi.

A Readline könyvtár számos újdonságot kapott: az új search-ignore-case változó lehetővé teszi a kis- és nagybetűket nem megkülönböztető keresést, az export-completions új parancs pedig a kiegészítéseket gépileg olvasható formában exportálja más folyamatok számára. Az execute-named-command parancs lehetővé teszi bármely Readline-parancs végrehajtását név szerint. Az rl_macro_display_hook és rl_completion_rewrite_hook segítségével a makrók vagy kiegészítések viselkedése is testreszabható. A rl_print_keybinding parancs egy adott parancshoz tartozó billentyűkombinációkat jeleníti meg. A vi-módú felhasználók számára új lehetőség a bash-vi-complete beépített parancs.

POSIX megfelelés, kompatibilitás és viselkedésbeli változások

A Bash 5.3 több ponton is módosult a POSIX kompatibilitás érdekében. A test parancs összetett, zárójelezett kifejezéseinek értelmezése a coreutils viselkedéséhez igazodott, valamint a posix mód már nem követeli meg, hogy a függvénynevek szabályos shell-azonosítók legyenek. A shell immár deferálja a háttérfolyamatok befejezéséről szóló értesítéseket a szkript végrehajtásának végéig, amennyiben az interaktív shell éppen szkriptet forrásol. Az exit parancs viselkedését is a POSIX értelmezéséhez igazították: ha kilépési kódot nem adunk meg, akkor a $? változó eredeti értéke marad érvényes, de csak a trap blokk legfelső szintjén, és csak akkor, ha a kilépés valóban befejezi a „trap”-et.

A wait és wait -n parancsok új működése mostantól képes kezelni a már értesített vagy process substitution típusú háttérfolyamatokat, és megfelelően üríti a jobs listát POSIX módban. A jobs parancs használata mostantól eltávolítja a befejezett folyamatokat a belső listából. Az új dokumentáció jelentősen bővült, pontosított és a változásokat részletesebben dokumentálja. A bind parancs immár képes csak megadott beépített parancsokhoz tartozó billentyűtársításokat megjeleníteni, valamint új szintaxis is elérhető whitespace és idézőjeles megkülönböztetéssel. A shell mostantól az ablakméret-változást akkor is érzékeli, amikor jelkezelők futnak, bind -x parancsokat hajt végre, vagy programozott kiegészítést végez.

A Bash mostantól felismeri a login shellt akkor is, ha annak neve su vagy -su, és ennek megfelelően állítja be a környezeti változókat. A shell futása közben bekövetkező EOF esetén mostantól pontosabb hibaüzenetet ad a parancs befejezetlenségére utalva. Az install-strip és strip Makefile célok immár helyesen működnek cross-compile esetén is.

A kiadási megjegyzések a GNU weboldalán olvashatók.