Introducción
Desde el lanzamiento de Linux en 1991, uno de los rasgos característicos de éste sistema operativo ha sido la comodidad y eficiencia que implica trabajar desde la consola de comandos. En Windows la consola se llama CMD y luego se desarrollo una más avanzada que se llamó Powershell, sin embargo, ninguna de ellas puede igualar la simpleza y elegancia en el manejo que ofrece la Shell o Terminal de Linux. Acompáñame a conocer la historia del Terminal de Linux.
Si todavía no sabes qué es Linux, puedes encontrarlo en la siguiente entrada. ¿Qué es Linux? ¡Descubre su historia!
Terminal Linux
En 1991, cuando se desarrolló la primera versión de Linux, todos los sistemas operativos contaban con un terminal que permitía al usuario comunicarse con la máquina a través de comandos (input stream). Estos comandos generaba una respuesta (output stream) y/o mensajes de error (error stream).
Sin embargo, La Shell o Terminal de Linux, ha pasado por varios diseños que la han hecho única hasta llegar a las que conocemos actualmente:
Historia del Terminal Linux
Bourne Shell – sh
Apareció en 1977 con la versión 7 de UNIX. Fue desarrollado por Stephen Bourne y cumplió una serie de objetivos que hasta ese momento nadie había podido programar:
- Integraba variables de entorno lo que le permitía mandar muchísima información al comando que fuera a ejecutar sin necesidad de pasarla como argumentos explícitos.
- Integraba 64 veces más memoria para la lista de argumentos (8192 bytes), lo que aumentaba sus posibilidades de uso en gran medida.
Este fue el primer Shell que tuvo Linux y, de hecho, sigue siendo muy utilizado en entornos UNIX o en Ciberseguridad cuando se consigue acceso inicial a una máquina objetivo. Esto se debe a que todos los sistemas Unix tienen este terminal instalado aunque no sea la principal.
Almquist Shell – ash
Kenneth Almquist desarrolla esta Shell a finales de los años 80 como alternativa a la anterior. Es básicamente un clon de la Bourne Shell y, de hecho, se apropió del nombre sh en las máquinas BSD que la tomaron cómo predeterminada.
A pesar de que era una Shell compatible con Bourne, tenía problemas en entornos Linux a la hora de interpretar los Scripts. Esto se debe a que la mayoría contenían lenguaje específico de Bourne Shell.
Un Script es un archivo de texto que contiene contiene comandos uno en cada línea. El sistema es capaz de interpretarlo y ejecutarlo una línea detrás de otra.
Bourne-Again Shell – bash
Esta Shell fue desarrollada en 1989 por Brian Fox para el sistema operativo GNU. En 1988, empezó a codificar Bash debido a que la Free Software Foundation veía una necesidad estratégica en tener un interprete libre que pudiera ejecutar Scripts.
En 1989 salió a la luz la primera versión de Bash y, con el tiempo, se ha convertido en el terminal más popular en las distribuciones de GNU/Linux, siendo la Shell interactiva predeterminada en la mayoría de las distribuciones.
El terminal Bash se comenzó a diferenciar del resto desde el primer momento gracias a dos características clave:
- Bash Scripting: Este pseudo-lenguaje de programación permite llevar la ejecución de Scripts al siguiente nivel aprovechando el uso de Variables así como de expresiones lógicas como bucles y condicionales.
- Uso de Variables: El terminal Bash permitía el uso de variables globales (de entorno) y de variables locales que sólo serían recordadas durante la sesión en curso.
Korn Shell – ksh
Otra Shell basada de Bourne Shell, esta vez desarrollada por AT&T en 1980 y diseñada por David Korn. Su principal ventaja con respecto a otras Shell fue que ésta, desde su concepción, tenía su uso como lenguaje de programación como característica diferenciadora.
Incluyó algunas características rompedoras como Control de tareas, definición de alias de comandos e historial, cosas que Bash también integró. Su capacidad de tratamiento de archivos lo puso al nivel de otros lenguajes de programación dedicados como Perl o awk.
A pesar de lo anterior, su uso es bastante limitado a día de hoy.
Z Shell – zsh
Es una Shell muy potente que incluye algunas de las características de otras Shells como bash o ksh. Fue desarrollada en 1990 por Paul Falstad y su popularidad creció exponencialmente cuando en 2019, Apple decidió que zsh sería la Shell predeterminada de MacOS derrocando así a bash.
Algunas de sus características primordiales son:
- Completado de comandos y de argumentos programable.
- Compartir el historial de comandos con otras sesiones de Shell que se encuentren abiertas.
- Globbing de archivos que permite la búsqueda recursiva de archivos directamente en la Shell, sin necesidad de utilizar un programa externo como find o locate.
- Modos de compatibilidad.
- Módulos instalables que permiten aumentar su usabilidad.
La Shell zsh es, casi con toda seguridad, la siguiente pieza fundamental en la historia del terminal de Linux.
Conclusión
El terminal de Linux es la pieza más importante del sistema operativo, sin él, Linux nunca habría llegado a ser lo que es. Sin embargo, el terminal ha ido evolucionando con el tiempo y, con toda seguridad, seguirá haciéndolo en el futuro.
Si quieres aprender a utilizar la Shell de Linux como un profesional, no te pierdas las entradas de la Guía de Linux.