Bash (abreviatura de Bourne Again Shell) es un intérprete de comandos (Shell) y lenguaje desarrollado como un reemplazo libre y de código abierto para el Bourne Shell original (sh). Es parte del Proyecto GNU y se usa ampliamente en Linux y macOS como el shell predeterminado.
Historia
- Desarrollado por: Brian Fox, como parte del Proyecto GNU.
- Primera Versión: 1989.
- Propósito: Proporcionar un reemplazo gratuito y mejorado para el Bourne Shell, incorporando características de otros shells como el C Shell (csh) y KornShell (ksh).
- Estado Actual: Ampliamente utilizado como el shell predeterminado en la mayoría de las distribuciones de Linux y macOS.
- Últimas Versiones:
- Bash 5.2 (lanzada en 2022): Incluye mejoras en la corrección de errores y nuevas opciones de scripting.
- Versiones más utilizadas: Bash 4.x y Bash 5.x, dependiendo de la distribución Linux.
Características Clave de Bash
- Ejecución de Comandos: Permite a los usuarios ejecutar comandos e interactuar con el sistema operativo.
- Scripting: Ofrece capacidades avanzadas de scripting, incluyendo bucles, condicionales y funciones.
- Características Interactivas: Proporciona historial de comandos, autocompletado, alias y control de trabajos para una operación más amigable.
- Características Avanzadas de Programación: Incluye arrays, manipulación de cadenas y manejo de errores.
Diferencias entre Bash 5 y Bash 4
Bash 5 introdujo varias mejoras con respecto a Bash 4. A continuación, se enumeran algunas de las principales diferencias:
- Soporte mejorado para scripting:
- Bash 5 introdujo nuevas opciones para manejar errores y comportamiento en los scripts, como
SRANDOM, que genera números aleatorios más seguros. -
Soporte mejorado para matrices asociativas, facilitando el manejo de datos más complejos.
-
Correcciones de errores y rendimiento:
- Reducción de problemas en funciones heredadas.
-
Mejoras en la estabilidad al ejecutar scripts extensos.
-
Compatibilidad con nuevos entornos:
-
Mejor soporte para entornos modernos, incluyendo sistemas que usan UTF-8 y configuraciones de localización avanzadas.
-
Funciones interactivas:
- Comportamiento mejorado en el historial de comandos.
-
Optimización de la autocompletación para manejar directorios grandes más rápido.
-
Depuración:
- Nuevas opciones para depurar scripts, como mejoras en
set -xpara rastrear variables de manera más efectiva.
Bash vs SH
| Característica | sh |
bash |
|---|---|---|
| Scripting | Capacidades básicas de scripting | Scripting avanzado con sintaxis extendida y características adicionales |
| Uso Interactivo | Sin historial ni autocompletado | Amigable, con historial y autocompletado de comandos |
| Arrays | No soportados | Soporta arrays indexados y asociativos |
| Sustitución de Comandos | Solo sintaxis de backticks |
Soporta $(comando) y backticks |
| Portabilidad | Altamente portátil | Principalmente en Linux y macOS |
| Rendimiento | Más rápido en scripts simples | Soporta tareas más complejas |