← Volver a artículos
Noticias· 5 min de lectura

Historia de Bash y la shell de Unix: del Thompson shell a hoy

Ken Thompson y Dennis Ritchie, creadores de Unix, trabajando con un teletipo en 1973
Imagen: Unknown authorUnknown author / Public domain · Wikimedia Commons

Abres una terminal en Linux, escribes un comando y ahí estás, hablando con una pieza de software que tiene más de cincuenta años a la espalda: la shell. Es el intérprete que traduce tus órdenes al sistema operativo, y su evolución cuenta buena parte de la historia de Unix y del software libre. Aquí vamos a recorrer ese camino, desde el primer intérprete de comandos hasta Bash, la shell que hoy manda en el mundo Linux.

El Thompson shell: el primer intérprete (1971)

La historia empieza en los laboratorios Bell. En 1971 Ken Thompson escribió la primera shell de Unix, que hoy conocemos como Thompson shell (sh). Se distribuyó con las versiones 1 a 6 de Unix, entre 1971 y 1975. Era un intérprete de comandos sencillo, pensado para ejecutar programas de forma interactiva más que para programar.

Aun siendo tan básico, trajo ideas que seguimos usando a diario: la redirección de entrada y salida con < y >, y sobre todo las tuberías (pipes), que permiten encadenar la salida de un programa con la entrada de otro. Aquella filosofía de “herramientas pequeñas que hacen una sola cosa bien y se combinan entre sí” sigue siendo el alma de los sistemas tipo Unix, incluido el kernel Linux.

El Bourne shell: el estándar de UNIX (1979)

Sesión de la shell de Unix Version 6 emulada en un PDP-11 con SIMH
La shell de las primeras versiones de Unix, recreada en un emulador del miniordenador PDP-11. · Imagen: Huihermit / CC0 · Wikimedia Commons

El gran salto llegó en 1979, cuando Stephen Bourne, también en Bell Labs, presentó el Bourne shell junto a UNIX Version 7. Ese intérprete heredó el nombre sh y definió casi todo lo que hoy damos por básico en cualquier shell: variables, estructuras de control completas (if, for, while), sustitución de comandos y los célebres here documents.

Con el Bourne shell la shell pasó a ser un verdadero lenguaje de programación. Desde entonces, escribir scripts dejó de ser un truco para administradores avanzados y se volvió la forma habitual de automatizar tareas. Su sintaxis caló tanto que aún define el estándar POSIX que respetan las shells modernas, y por eso muchos scripts antiguos siguen funcionando en distribuciones tan veteranas como Slackware.

C shell y KornShell: la competencia

El Bourne shell no estuvo solo mucho tiempo. También hacia 1979, Bill Joy, por entonces estudiante en Berkeley, creó el C shell (csh), con una sintaxis que se inspiraba en el lenguaje C. Se distribuyó a lo grande con BSD Unix y trajo comodidades como el historial de comandos y los alias. Su legado sigue vivo en sistemas como FreeBSD, donde variantes de csh han tenido durante años un papel destacado.

En 1983 David Korn presentó el KornShell (ksh), un intento de mejorar el Bourne shell sin romper la compatibilidad. Añadió control de trabajos, arrays asociativos y edición de la línea de comandos al estilo vi o Emacs. Durante años, ksh fue la shell comercial de referencia en muchos Unix corporativos.

Bash: la shell renacida (1989)

Captura de la línea de comandos de Bash ejecutándose en GNOME Terminal sobre Linux
Bash en acción dentro de GNOME Terminal, la shell por defecto de la mayoría de distribuciones Linux. · Imagen: The GNOME Project / GPL · Wikimedia Commons

A finales de los ochenta, el proyecto GNU de Richard Stallman necesitaba una shell completamente libre que reemplazara al Bourne shell sin restricciones de licencia. La tarea recayó en Brian Fox, que empezó a programarla en 1988 y publicó la primera beta en 1989.

El nombre lo dice todo: Bash, Bourne Again Shell, es a la vez un juego de palabras y una declaración de intenciones. El Bourne shell “renacido” para un mundo que quería libertad y funcionalidad. Bash se quedó con lo mejor de sus predecesores: mantenía la compatibilidad con la sintaxis del Bourne shell y sumaba el historial, la edición de línea y otras comodidades de csh y ksh. En 1989 también se sumó al proyecto Chet Ramey, que acabó siendo su mantenedor principal y lo sigue siendo décadas después.

Bash como shell por defecto de Linux

Cuando Linux empezó a despegar a principios de los noventa, Bash ya era una shell madura y libre, encajaba al dedillo con la filosofía GNU/Linux y se convirtió en la shell por defecto de la inmensa mayoría de distribuciones. Hoy la tienes lista para usar en Ubuntu, Debian y prácticamente cualquier sistema que instales.

Su poder está en el scripting. Con tuberías, redirecciones, variables y funciones, Bash te deja automatizar desde una copia de seguridad hasta el despliegue completo de un servidor. Esa versatilidad explica por qué sigue siendo la herramienta diaria de administradores de sistemas y desarrolladores en todo el planeta.

Alternativas modernas: zsh y fish

Bash no es el final de la historia. En los últimos años han ganado terreno alternativas que mejoran la experiencia interactiva. Zsh (Z shell) ofrece un autocompletado más inteligente, corrección de errores y un sistema de temas muy popular gracias a frameworks como Oh My Zsh. Fish (friendly interactive shell) va por la sencillez y la usabilidad desde el primer arranque, con sugerencias automáticas basadas en el historial.

El cambio más sonado llegó en 2019: por motivos de licencia (Bash pasó a GPLv3), Apple sustituyó Bash por zsh como shell por defecto en macOS Catalina, y así sigue. Aun así, Bash mantiene su corona en el mundo Linux: cinco décadas después de aquel primer Thompson shell, la shell sigue siendo el corazón de la línea de comandos y Bash, su representante más universal.