
Három évvel a Bash 5.2 után, hosszas bétatesztelési időszakot követően megjelent a világ legnépszerűbb Unix-szerű rendszerekhez készült parancssori értelmezőjének új verziója, a Bash 5.3. A kiadás számos érdekes újítást hoz, különösen a fejlettebb szkriptek és rendszerszintű automatizálás kedvelői számára. A legfontosabb újítás a két új parancshelyettesítési forma (command substitution):
- ${ command; }
- ${|command;}
Ezek a szintaxisok nem külön gyerekfolyamatban (child process) futtatják a megadott parancsot, hanem a jelenlegi shell környezetben (current shell context). Ez azt jelenti, hogy például egy ciklusban futtatott parancs kimenetét sokkal kisebb erőforrásigénnyel lehet feldolgozni, mivel elmarad a klasszikus fork és pipe művelet. Az új formák lehetővé teszik azt is, hogy a parancs kimenete a REPLY változóba kerüljön anélkül, hogy alfolyamatra lenne szükség – ez beágyazott rendszereken (embedded systems) vagy nagy teljesítményigényű szkripteknél rendkívül hasznos lehet.
Új globális változó: GLOBSORT
A GLOBSORT nevű új shell-változó segítségével a fájlnevek globális kiterjesztésének (pathname expansion, más néven „globbing”) sorrendje vezérelhető. A sorrendezés történhet:
- fájlnév szerint (name),
- fájlméret szerint (size),
- különféle időbélyegek (timestamps) alapján,
- vagy akár sorrendezés nélkül is (unsorted).
Továbbá meghatározható, hogy a lista növekvő vagy csökkenő sorrendben jelenjen meg. Ez lehetővé teszi például, hogy egy szkript először a legújabb vagy legnagyobb fájlokat dolgozza fel.
Újdonságok a beviteli és kiegészítési funkciókban
A haladó felhasználók számára, akik sokat dolgoznak tab-kiegészítéssel, két fontos újítás érkezett:
- compgen -V: A compgen parancs most már képes az automatikusan generált kiegészítéseket egy változóba tölteni közvetlenül, ami új lehetőségeket nyit a dinamikus szkriptek előtt.
- read -E: A read parancs mostantól használja a Readline programozható kiegészítési rendszerét, amikor interaktív bemenetet kérünk a felhasználótól.
További hasznos újítás a source -p PATH parancs, amellyel explicit keresési útvonalon „forrásolhatjuk” (dot source) a kísérő fájlokat, nem csak a megszokott $PATH segítségével.
Megfelelés a C23 szabványnak
A Bash 5.3 forráskódja immár megfelel a legújabb C23 szabványnak (a C programozási nyelv 2023-as szabványa). Ez azonban azt is jelenti, hogy a régi K&R típusú C fordítók (mint amilyeneket még a 80-as években használtak) már nem képesek lefordítani a kódot. Ez a legtöbb modern Linux-disztribúció számára nem jelent problémát, de figyelmeztetés a régi rendszerek és toolchain-ek használóinak, hogy ideje továbblépni.
Readline 8.3 is megjelent – új funkciókkal
A Bash-hoz szorosan kapcsolódó Readline 8.3 könyvtár is ezzel egy időben jelent meg. A Readline egy interaktív parancssori szerkesztőt biztosít, amelyet sok más program is használ. Az új verzió újdonságai:
- Kis- és nagybetűérzéketlen keresés (search-ignore-case),
- Programból meghívható parancs-végrehajtás (execute-named-command),
- Kiegészítési adatok exportálása más programok számára (export-completions).
Ez a frissítés főként azokat érinti, akik saját shell-szerkesztőt vagy interaktív CLI-t fejlesztenek.
A forráskód már letölthető, további információk a levelezőlistán.
