Una ilustración de una computadora portátil que muestra una terminal con líneas de texto.

¿Qué es el shell Bash y por qué es tan importante para Linux?

fatmawati achmad zaenuri / Shutterstock.com

El caparazón Bash tiene más de 30 años y todavía se mantiene fuerte. ¿Qué hace, de dónde viene y por qué sigue siendo el shell más común en los sistemas Linux?

¿Qué es un caparazón?

Cuando abres una ventana de terminal y escribes comandos, algo debería tomar lo que escribiste, averiguar lo que querías y realizar las tareas que pediste. El software que hace esto es el shell. Un shell es un intérprete de comandos. Analiza lo que ha escrito y selecciona comandos, nombres de directorio, nombres de archivos y nombres de programas para que pueda averiguar lo que está tratando de lograr.

La gente suele utilizar los términos «ventanas de terminal», «línea de comandos» y «shell» indistintamente, pero son tres cosas distintas. Una ventana de terminal es una representación de software de un terminal ticker físico. Te da una conexión a la computadora. Para hacer algo útil, debe poder escribir instrucciones en una línea de comando. La línea de comandos la proporciona el shell, y la ventana de terminal le permite acceder al shell.

Los shells también le permiten fragmentar una colección de comandos en un archivo de texto llamado script. Todos los comandos del script se ejecutan cada vez que lo ejecuta. Los scripts ofrecen eficiencia, repetibilidad y conveniencia.

El primer shell de Unix fue el concha de Thompson, llamado sh. Fue escrito por Ken Thompson, quien es quizás el miembro más clave de los padres fundadores de Unix en Laboratorios Bell. El shell de Thompson se ha utilizado como el shell de Unix predeterminado hasta la versión 6 de Unix inclusive. Fue reemplazado por el Cáscara de Bourne en Unix versión 7 en 1979.

El caparazón de Bourne

El caparazón de Bourne, escrito por Stephen bourne, fue un reemplazo mejorado para la carcasa de Thompson. Incluso se comenzó a usar el mismo comando que el shell de Thompson, sh, para mantener la compatibilidad con versiones anteriores de los scripts existentes. La compatibilidad con versiones anteriores era importante, pero se incluyeron nuevas funciones, que proporcionan muchas funciones que todavía usamos hoy.

El shell Bourne era un shell interactivo y un lenguaje de secuencias de comandos. Se hizo cargo de ejecutar las tareas en primer plano y en segundo plano y controlar las tareas básicas. Se han agregado tuberías y redireccionamientos, así como mejoras en el manejo de bucles.

El shell ahora tenía comandos incorporados, lo que significa que no necesitaba pasar todo a utilidades externas, lo que lo hacía más eficiente. El shell Bourne incluso tiene soporte para «documentos aquí», una forma elegante de automatizar el envío de datos en comandos.

La cáscara de Bourne elevó el listón y se convirtió en el nuevo estándar.

El nacimiento de Bash

En 1984, cuando el Proyecto GNU anunció planes para crear un clon de Unix gratuito, escrito desde cero y con una nueva licencia permisiva– el equipo necesitaba un error tipográfico. Cuando un voluntario que estaba trabajando en un caparazón para el Proyecto GNU no pudo entregar nada, Brian fox recibió instrucciones de escribir un clon del shell Bourne.

Fue apodado el Bourne Again Shello Bash. En parte fue un tributo a Stephen Bourne y en parte un juego de palabras para divertirse. Después de su lanzamiento en 1989, Chet ramey contribuyó con algunas correcciones de errores a Bash. Eventualmente se convirtió en co-mantenedor del shell Bash. Hoy en día, sigue siendo el responsable del proyecto Bash.

Linus Torvalds, el creador del kernel de Linux, dijo que los dos primeros programas que ejecutó en su nuevo kernel en 1991 fueron Bash y gcc, el compilador GNU. La asociación de las utilidades GNU con el kernel de Linux fue mutuamente beneficiosa. El sistema operativo GNU necesitaba un kernel y el kernel de Linux necesitaba todo lo que constituye un clon de Unix.

Debido a que Bash es el shell estándar de GNU, se ha convertido en el shell estándar en todas las distribuciones GNU / Linux. Linux ha florecido hasta el punto de que ahora sustenta una cantidad asombrosa del mundo moderno. El casco de Bash también aprovechó esta ola de éxito.

Bash integra y mejora la funcionalidad completa del shell Bourne, pero también se inspiró en otros shells, como el caparazón C (csh) y el KornShell (ksh). Por ejemplo, la expansión de la tilde «~”Al valor retenido en el $HOME La variable de entorno proviene del shell C, y la fc El comando que llama al editor predeterminado en los comandos del historial de comandos proviene de KornShell.

Bash introdujo archivos de configuración como los archivos «.bashrc» y «.bash_profile». La edición de la línea de comandos en Bash ha superado con creces las capacidades de los shells anteriores. La manipulación de comandos ejecutados previamente en el historial de comandos fue una versión mejorada de la función «bang history» de los shells C. La expansión Brace era una función que faltaba en el shell Bourne que se implementó en Bash como un superconjunto de funciones que se encuentran en C shell. Las tablas se han mejorado al eliminar sus límites de tamaño. La expansión de parámetros en el símbolo del sistema permite a los usuarios personalizar su símbolo de Bash.

El shell Bash tiene como objetivo cumplir con POSIX P1003.2 / ISO 9945.2 Shell y utilidades la norma.

Por qué Bash sigue siendo importante

Una MacBook Pro de Apple parcialmente cerrada que brilla en la oscuridad.Omar Tursic / Shutterstock.com

Bash no podría haber durado tanto, más de 30 años, como el shell de Linux predeterminado si no estuviera a la altura de la tarea. Debido a su larga vida útil y su enorme base de usuarios, Bash es maduro y muy estable. Hay muchos shells alternativos disponibles, desde los antiguos como el shell C y el KornShell hasta los shells más nuevos como el shell Z (zsh) y el Shell interactivo fácil de usar (fish). Tanto el caparazón Z como el caparazón de pescado tienen características que Bash no tiene, así como formas posiblemente mejores de hacer algunas de las mismas cosas que Bash. Entonces, ¿por qué Bash sigue siendo el caparazón dominante?

De todas las máquinas Linux que me han pedido que administre, no recuerdo una sola que no tuviera Bash como shell. Máquinas Unix, sí, pero máquinas Linux, no. Es Bash todo el tiempo. Esta familiaridad le permite ponerse a trabajar rápidamente y ser eficaz de inmediato. Ya conoces Bash, por lo que no hay curva de aprendizaje. No estás paralizado por pequeñas diferencias de sintaxis que te hacen girar en círculos tratando de averiguar por qué algo no funciona. El tiempo dedicado a averiguar cuál debería ser el molde en ese caparazón es tiempo de inactividad, por lo que lo mejor para el cliente corporativo es utilizar un caparazón bien conocido y ampliamente utilizado.

El uso de un shell que sea (o se esfuerce por ser) compatible con POSIX es importante para muchas distribuciones de Linux, pero lo que más importa es la compatibilidad con versiones anteriores. Obviamente, realizar cambios que puedan romper los scripts existentes no es atractivo. Atractivo o no, a veces solo hay que morder la bala. El 3 de septiembre de 1967, Suecia pasó de conducir por la izquierda a conducir por la derecha. A las 4:50 a.m. todo el tráfico debe haberse detenido, muévase lentamente al otro lado de la carretera y deténgase una vez más. A las 5 a.m., el tráfico podría reanudarse, y todos ahora conducen por la derecha.

¿Será reemplazado alguna vez Bash?

Lo que puede parecer inconcebible ahora, en realidad puede suceder más tarde. A menos que queramos aferrarnos a la creencia de que todos usaremos Bash hasta el fin del mundo, la verdad es que probablemente algún día Bash será reemplazado como el shell predeterminado de Linux, ya sea que todavía sea del shell estándar de GNU. o no. O tal vez sea Bash, pero mejorado mucho más allá del shell que usamos hoy. Pero cualquier cosa que reemplace al Bash de hoy tendrá que ser completamente (o casi) compatible con versiones anteriores o vale la pena intentarlo, independientemente de las ventajas.

No es sin precedentes. A partir de la versión 10.15 de macOS, Apple abandonó Bash y adoptó el shell Z como el shell predeterminado. Apple tiene problemas con la licencia pública general GNU (GPL) v.3. Desafortunadamente, esta es la licencia que usa Bash. La última versión de Bash publicada bajo GPL v.2 fue la versión 3.2 de 2007. La versión actual es 5.1. Apple estaba casi una década y media atrasada. La única forma de que Apple incluyera un shell actualizado sin cambiar a GPL v.3 era cambiar completamente a otro shell. Para Apple, valió la pena. (Sin embargo, siempre puede volver a Bash en macOS si lo prefiere).

Existe una gran diferencia entre la estación de trabajo de un usuario avanzado y un servidor Linux empresarial que debe administrar de forma remota. a través de una conexión SSH. En casi 1,5 millones de servidores alojados en Amazon EC2, más del 93% usa Linux. Casi el 75% de los servidores web ejecutar linux. Organizaciones como Red Hat, Amazon y Google usan Linux internamente.

Es difícil imaginar los beneficios que podría ofrecer un nuevo caparazón que justificaría este tipo de conmoción global. Es por eso que Bash está cementado en su lugar.

¡Incluso Microsoft ofrece ahora una forma de ejecutar un shell Bash basado en Linux en Windows 10!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Experto Geek - Tu Guía en Tendencias Tecnológicas