Bash 5.3 ja és aquí amb millores en substitució de comandes, noves variables i compatibilitat amb C23

bash Linux

Fa pocs dies el projecte GNU va donar a conèixer el llançament de la nova versió de Bash 5.3, el popular intèrpret d'ordres que segueix sent l'opció predeterminada a la majoria de les distribucions Linux.

Aquesta nova versió representa la feina de gairebé tres anys, en els quals no només s'implementen millores en el llenguatge i el comportament de l'intèrpret d'ordres, sinó que també presenta noves funcionalitats que l'alineen amb estàndards moderns com el C23. A més, s'acompanya del llançament de la biblioteca Readline 8.3.

Novetats de Bash 5.3

Un dels canvis més destacats a Bash 5.3 és la introducció de noves formes de substitució de comandes: ${ command; } i ${|command;}. Aquestes permeten interceptar la sortida d'una ordre sense necessitat de crear un procés fill ni utilitzar pipelins, reduint així el consum de recursos i millorant-ne el rendiment. El resultat es pot emmagatzemar directament a la variable REPLY, simplificant tasques comunes de captura de sortida.

Una altra de les novetats que introdueix GNU Bash 5.3 és la nova variable GLOBSORT permet definir el criteri dordre en expandir rutes de fitxers. Els usuaris poden ordenar per nom, mida, data de modificació i més, amb opcions tant en ordre ascendent com descendent.

A més, Bash 5.3 presenta millores en diverses ordres incorporades. L'ordre compgen ara pot emmagatzemar les finalitzacions generades en una variable (-V varname), mentre que read incorpora l'opció -E per utilitzar la biblioteca Readline amb les regles d'autocompleta de Bash. També millora source, que ara admet -p PATH per modificar la ruta de cerca.

Així mateix, l'ordre umask ha estat ajustat per complir completament amb l'especificació POSIX, i printf ha estat millorat amb noves opcions per a cadenes multibyte i representació alternativa de caràcters i cadenes.

Compatibilitat amb C23 i adéu al K&R C

Un dels canvis estructurals més importants és la adopció de l'estàndard C23 al codi font de Bash. Com a resultat, s'ha eliminat el suport per a compilació en mode «K&R C», una tècnica que data dels primers dies del llenguatge C.

D'altra banda, Bash 5.3 introdueix diverses ordres carregables com:

  • kv: per generar matrius associatives a partir de dades en format clau-valor.
  • strptime: converteix dates en format text a temps Unix.
  • fltexpr: permet fer operacions aritmètiques en punt flotant, emulant el comportament de let.

A més, s'hi afegeix la variable dinàmica BASH_MONOSECONDS, que ofereix un comptador monotònic del temps del sistema, útil per a tasques on l'estabilitat temporal és crítica.

En mode POSIX, Bash ara realitza comparacions de cadenes amb els operadors < i > respectant la configuració regional. També alinea el comportament de comandes com test, trap, wait i bind, seguint fidelment les exigències de la norma. Per exemple, trap -P permet imprimir l'acció de parany de cada senyal, i wait -n millora la gestió de processos acabats i substitucions.

Readline 8.3

La biblioteca Readline, companya de Bash, també va rebre una actualització important. Entre les novetats més rellevants destaquen:

  • search-ignore-case: permet cerques a l'historial sense distingir majúscules.
  • export-completions: exporta les possibles completacions d'una paraula per processar-les externament.
  • execute-named-command: executa ordres el nom de les quals es llegeix des de l'entrada estàndard, útil per a scripts i personalització.
  • Suport millorat per a macros, noves variables configurables i millor maneig de les dimensions de pantalla després d'una represa (SIGCONT).

Instal·lació i/o actualització de Bash a Linux

Per a aquells interessats en instal·lar o actualitzar Bash a Linux, han de saber que depèn de la distribució que estiguis utilitzant. A continuació t'explico com fer-ho a les principals distribucions:

En distribucions basades en Debian (com Ubuntu, Linux Mint)

sudo apt install --only-upgrade bash

Això actualitzarà Bash a la versió més recent disponible als repositoris oficials.

Si vols instal·lar-lo des de zero (per exemple, en un sistema molt mínim):

sudo apt install bash

En distribucions basades en Red Hat (com Fedora, CentOS, RHEL)

suo dnf update bash Per instal·lar Bash (si no hi és):
suo dnf install bash

A Arch Linux i derivades (com Manjaro)

sudo pacman -Syu bash

Això actualitzarà Bash juntament amb tot el sistema. Per instal·lar només Bash:

sudo pacman -S bash