¿Qué es Bash Shell en Linux?

Bash suena como un nombre extraño para una interfaz de línea de comandos que recibe a los usuarios que inician sesión en cualquier distribución de Linux. ¿Qué es exactamente Bash? ¿Para qué lo puede usar? Vamos a averiguar.

Si bien Bash generalmente se asocia con Linux, también puede usarlo en Windows. macOS ya incluye Bash, aunque ha cambiado el shell predeterminado a Zsh, una versión avanzada de Bash con algunas funciones adicionales.

¿Qué es una concha?

El término Bash shell se usa mucho, pero ¿qué es un shell de todos modos? ¿Por qué es necesario? ¿Y por qué Bash parece ser el único caparazón que existe?

Los sistemas operativos modernos con sus interfaces gráficas de usuario intuitivas han hecho que usar una computadora parezca fácil. Pero en los primeros días de las computadoras, decirle a un sistema qué hacer no era tan sencillo.

Los programadores tenían que conocer los detalles de bajo nivel del sistema para el que estaban codificando e instruir manualmente cada pieza de hardware. Los sistemas operativos se diseñaron para cerrar esta brecha, pero ¿cómo instruiría al propio sistema operativo?

Entra en la Concha. La capa más externa del sistema operativo fue diseñada para ser un entorno interactivo que expone toda la funcionalidad de la computadora en una interfaz simple. Este caparazón era lo más profundo en lo que un usuario de la computadora tenía que profundizar, ya que contenía todos los comandos necesarios para operar el sistema.

Bourne otra vez: cómo nació Bash

Una idea errónea común es que Bash fue creado por Linus Torvalds para el sistema operativo Linux. En realidad, Bash simplemente se transfirió a Linux y ya se usaba en su predecesor, Unix.

En muchos sentidos, Unix es donde todo comenzó para los sistemas operativos modernos. Eliminó gran parte de la complejidad intrincada que plagaba las primeras implementaciones del sistema operativo, presentando las funciones de una computadora en una interfaz basada en texto comparativamente simple.

Por supuesto, Unix mismo tomó prestadas la mayoría de sus ideas de Multics, incluido el concepto de shell. Pero fue Unix el que realmente popularizó la técnica, con el lanzamiento de Thompson Shell con su primera versión.

Sin embargo, su funcionalidad era bastante limitada y muchos programadores terminaron modificando el shell para hacerlo más amigable con las secuencias de comandos. Bourne Shell fue el reemplazo oficial del shell de Unix, agregando soporte para scripts de shell.

Bourne Again Shell se lanzó mucho más tarde, ofreciendo una mejora adicional en sus capacidades de secuencias de comandos y convirtiéndolo en un shell de licencia GNU gratuito y de código abierto que podría ser utilizado por cualquier sistema operativo. Y Linux lo adoptó rápidamente, convirtiéndose en el shell predeterminado para sus diversas distribuciones.

Pero, ¿qué puede hacer Bash?

Bash es básicamente un entorno de secuencias de comandos completo con acceso completo al sistema Linux. Desde la gestión de archivos hasta la ejecución de aplicaciones, puede realizar todas las tareas informáticas con los comandos Bash.

Para la mayoría de los usuarios de Linux, esto solo se traduce en comandos de shell manuales. Después de todo, el objetivo principal de Bash es servir como interfaz para el sistema operativo.

Y hay bastantes de estos comandos integrados. Puede administrar la propiedad de archivos con chown, configurar los ajustes de red con ifconfig, ubicar directorios con find y la lista continúa.

Pero Bash no existiría si los comandos de Linux fueran todo lo que interesara a los usuarios. No, el verdadero poder del shell de Linux reside en las secuencias de comandos.

La importancia de las secuencias de comandos

La idea de los comandos de secuencias de comandos es simple. En lugar de ingresar manualmente todos los comandos que desea que el sistema ejecute uno por uno, guarde los comandos en un archivo de texto que se puede ejecutar a pedido.

Esto convierte la interfaz de shell en una especie de lenguaje de programación, lo que permite a los usuarios automatizar cualquier acción en un script reutilizable. Obviamente, va más allá, ya que cualquier lenguaje de programación necesita cosas como variables y funciones además de la capacidad de guardar código.

Y Bash tiene todas esas características. Esta es la razón por la cual el shell, y hasta cierto punto, Linux en general, es tan popular para administrar servidores y sistemas comerciales.

Un usuario doméstico puede acceder haciendo clic en un montón de botones, pero un administrador del sistema debe poder realizar cualquier acción en una gran cantidad de computadoras de forma remota. Los scripts Bash son los que hacen posible este tipo de gestión automatizada del sistema.

Por ejemplo, considere nuestra guía sobre cómo cambiar el nombre de archivos y carpetas en Linux. La guía ilustra ambos métodos: GUI y script. Como puede ver, el método de secuencias de comandos es mucho más escalable cuando hay una gran cantidad de archivos involucrados.

Comenzando con Bash

Lo bueno de Bash es que no se limita solo a Linux. Ahora puede instalar Linux en Windows a través del Subsistema de Windows para Linux (WSL), que viene con Bash de manera predeterminada.

Eso significa que puede comenzar a experimentar con Bash sin tener que cambiar completamente a Linux. Incluso si es un usuario ocasional que no tiene la intención de trabajar con servidores Linux, las interesantes capacidades de un shell Bash pueden serle útiles.

No es que Bash sea su única opción para automatizar tareas informáticas. PowerShell es una interfaz similar que funciona con Windows, aparte de lo que puede administrar con el símbolo del sistema, por supuesto.