Noticia Bash 5.3 ya está aquí con mejoras en sustitución de comandos, nuevas variables y compatibilidad con C23

bash Linux


Hace pocos días el proyecto GNU dio a conocer el lanzamiento de la nueva versión de Bash 5.3, el popular intérprete de comandos que sigue siendo la opción predeterminada en la mayoría de las distribuciones Linux.

Esta nueva versión representa el trabajo de casi tres años, en los cuales no solo se implementan mejoras en el lenguaje y el comportamiento del shell, sino que también presenta nuevas funcionalidades que lo alinean con estándares modernos como el C23. Además, se acompaña del lanzamiento de la biblioteca Readline 8.3.

Novedades de Bash 5.3​


Uno de los cambios más destacados en Bash 5.3 es la introducción de nuevas formas de sustitución de comandos: ${ command; } y ${|command;}. Estas permiten interceptar la salida de un comando sin necesidad de crear un proceso hijo ni utilizar pipelines, reduciendo así el consumo de recursos y mejorando el rendimiento. El resultado puede almacenarse directamente en la variable REPLY, simplificando tareas comunes de captura de salida.

Otra de las novedades que introduce GNU Bash 5.3 es la nueva variable GLOBSORT permite definir el criterio de orden al expandir rutas de archivos. Los usuarios pueden ordenar por nombre, tamaño, fecha de modificación y más, con opciones tanto en orden ascendente como descendente.

Ademas de ello, Bash 5.3 presenta mejoras en varios comandos incorporados. El comando compgen puede ahora almacenar las finalizaciones generadas en una variable (-V varname), mientras que read incorpora la opción -E para utilizar la biblioteca Readline con las reglas de autocompletado de Bash. También se mejora source, que ahora admite -p PATH para modificar la ruta de búsqueda.

Asimismo, el comando umask ha sido ajustado para cumplir completamente con la especificación POSIX, y printf ha sido mejorado con nuevas opciones para cadenas multibyte y representación alternativa de caracteres y cadenas.

Compatibilidad con C23 y adiós al K&R C​


Uno de los cambios estructurales más importantes es la adopción del estándar C23 en el código fuente de Bash. Como resultado, se ha eliminado el soporte para compilación en modo «K&R C», una técnica que data de los primeros días del lenguaje C.

Por otra parte, Bash 5.3 introduce varios comandos cargables como:

  • kv: para generar matrices asociativas a partir de datos en formato clave-valor.
  • strptime: convierte fechas en formato texto a tiempo Unix.
  • fltexpr: permite realizar operaciones aritméticas en punto flotante, emulando el comportamiento de let.

Además, se añade la variable dinámica BASH_MONOSECONDS, que ofrece un contador monotónico del tiempo del sistema, útil para tareas donde la estabilidad temporal es crítica.

En modo POSIX, Bash ahora realiza comparaciones de cadenas con los operadores < y > respetando la configuración regional. También alineael comportamiento de comandos como test, trap, wait y bind, siguiendo fielmente las exigencias de la norma. Por ejemplo, trap -P permite imprimir la acción de trampa de cada señal, y wait -n mejora la gestión de procesos terminados y sustituciones.

Readline 8.3​


La biblioteca Readline, compañera de Bash, también recibió una actualización importante. Entre sus novedades más relevantes destacan:

  • search-ignore-case: permite búsquedas en el historial sin distinguir mayúsculas.
  • export-completions: exporta las completaciones posibles de una palabra para procesarlas externamente.
  • execute-named-command: ejecuta comandos cuyo nombre se lee desde la entrada estándar, útil para scripts y personalización.
  • Soporte mejorado para macros, nuevas variables configurables y mejor manejo de las dimensiones de pantalla tras una reanudación (SIGCONT).

Instalación y/o actualización de Bash en Linux​


Para aquellos interesados en instalar o actualizar Bash en Linux, deben saber que depende de la distribución que estés utilizando. A continuación te explico cómo hacerlo en las principales distribuciones:

En distribuciones basadas en Debian (como Ubuntu, Linux Mint)

sudo apt install --only-upgrade bash

Esto actualizará Bash a la versión más reciente disponible en los repositorios oficiales.

Si deseas instalarlo desde cero (por ejemplo, en un sistema muy mínimo):

sudo apt install bash

En distribuciones basadas en Red Hat (como Fedora, CentOS, RHEL)

sudo dnf update bash

Para instalar Bash (si no está):

sudo dnf install bash

En Arch Linux y derivadas (como Manjaro)

sudo pacman -Syu bash

Esto actualizará Bash junto con todo el sistema. Para instalar solo Bash:

sudo pacman -S bash

Continúar leyendo...