
Před několika dny projekt GNU oznámil vydání nové verze Bash 5.3, populárního příkazového interpretu, který zůstává výchozí volbou ve většině linuxových distribucí.
Tato nová verze představuje téměř tři roky práce , během nichž byly provedeny nejen vylepšení jazyka a chování shellu, ale byly také zavedeny nové funkce, které jej sladí s moderními standardy, jako je C23. Je také doprovázena vydáním knihovny Readline 8.3.
Co je nového v Bashu 5.3
Jednou z nejvýznamnějších změn v Bash 5.3 je zavedení nových metod substituce příkazů: `${ command; }` a `${|command;}` . Ty umožňují zachytit výstup příkazu bez vytváření podřízeného procesu nebo použití pipeline, čímž se snižuje spotřeba zdrojů a zlepšuje výkon. Výsledek lze uložit přímo do proměnné `REPLY`, což zjednodušuje běžné úlohy zachycení výstupu.
Další novou funkcí zavedenou v GNU Bash 5.3 je nová proměnná GLOBSORT, která umožňuje definovat kritéria řazení při rozšiřování cest k souborům. Uživatelé mohou řadit podle názvu, velikosti, data úpravy a dalších údajů, s možnostmi vzestupného i sestupného pořadí.
Bash 5.3 navíc zavádí vylepšení několika vestavěných příkazů. Příkaz `compgen` nyní může ukládat vygenerované dotazy na dokončení do proměnné (`-V název_proměnné`), zatímco `read` nyní obsahuje volbu `-E` pro použití knihovny Readline s pravidly automatického dokončování Bashu. Vylepšen byl také `source`, který nyní podporuje `-p PATH` pro úpravu cesty vyhledávání.
Kromě toho byl příkaz umask upraven tak, aby plně odpovídal specifikaci POSIX , a funkce printf byla vylepšena o nové možnosti pro vícebajtové řetězce a alternativní reprezentaci znaků a řetězců.
Kompatibilita s C23 a sbohem K&R C
Jednou z nejvýznamnějších strukturálních změn je přijetí standardu C23 ve zdrojovém kódu Bash. V důsledku toho byla odstraněna podpora pro kompilaci v režimu „K&R C“ , což je technika sahající až do počátků jazyka C.
Na druhou stranu, Bash 5.3 zavádí několik načítatelných příkazů, jako například:
- kV: generovat asociativní pole z dat ve formátu klíč-hodnota.
- strptime: převádí data v textovém formátu na unixový čas.
- fltexpr: umožňuje provádět aritmetické operace s plovoucí desetinnou čárkou a emulovat chování funkce let.
Kromě toho je přidána dynamická proměnná BASH_MONOSECONDS , která poskytuje monotónní čítač systémového času , užitečný pro úlohy, kde je časová stabilita kritická.
V režimu POSIX nyní Bash provádí porovnávání řetězců s operátory < a > a respektuje nastavení locale. Také sladí chování příkazů jako test, trap, wait a bind a úzce se drží požadavků standardu. Například `trap -P` umožňuje vypsat akci trap pro každý signál a `wait -n` zlepšuje zpracování ukončených procesů a substitucí.
Čtení řádku 8.3
Knihovna Readline, doplněk k Bashi, také prošla zásadní aktualizací. Mezi její nejvýznamnější nové funkce patří:
- vyhledávání-ignorovat-velká-písmená: umožňuje vyhledávání v historii bez rozlišování velkých a malých písmen.
- dokončení exportu: exportuje možná dokončení slova pro externí zpracování.
- spustit-pojmenovaný-příkaz: Spouští příkazy, jejichž název je přečten ze standardního vstupu, což je užitečné pro skriptování a přizpůsobení.
- Vylepšená podpora maker, nové konfigurovatelné proměnné a lepší zpracování rozměrů obrazovky po obnovení (SIGCONT).
Instalace a/nebo aktualizace Bash v Linuxu
Pro ty, kteří mají zájem o instalaci nebo aktualizaci Bash v Linuxu, by mělo být jasné, že to závisí na distribuci, kterou používáte. Níže vysvětlím, jak to provést v hlavních distribucích:
Na distribucích založených na Debianu (jako je Ubuntu, Linux Mint)
sudo apt install --only-upgrade bash
Tím se Bash aktualizuje na nejnovější verzi dostupnou v oficiálních repozitářích.
Pokud jej chcete nainstalovat od začátku (například na velmi minimalistický systém):
sudo apt install bash
Na distribucích založených na Red Hatu (jako je Fedora, CentOS, RHEL)
sudo dnf update bash Chcete-li nainstalovat Bash (pokud ještě není nainstalován):
sudo dnf install bash
V Arch Linuxu a jeho derivátech (například Manjaro)
sudo pacman -Syu bash
Tím se aktualizuje Bash spolu s celým systémem. Chcete-li nainstalovat pouze Bash:
sudo pacman -S bash