My Profile Photo

Er' blog de Arawako be Free!


Another site of a Venezuelan system administrator, pro Free Software


Mi viaje por el shell de Unix - Capítulo 1

Tuve abandonado por mucho tiempo este espacio, hoy he decidido retomarlo y qué mejor forma que escribir una serie de capítulos de mi principal herramienta de trabajo. Espero que este viaje sea de mucha satisfacción, pero en especial de mucho aprendizaje, sin más que agregar, entremos en el tema.

Por qué *shells?

El shell de Unix es una de las partes fundamentales de los Sistemas Operativos basados en Unix, si el Kernel es el corazón del sistema, el shell es la médula espinal de éste. Sin un shell sería imposible interactuar con todas las partes que componen al sistema operativo, incluyendo el Kernel.

Existen muchos shells, por eso me he referido a ello como el *Shell, puedes conseguir una lista en la página de FreeBSD, en este viaje nos centraremos en Shell Bourne, Korn y Bourne Again por ser éstos los más comunes y compatibles en cualquier entorno basado en Unix, el resto de las variaciones no son muy diferentes, para que se den una idea de lo parecido que son todos, en el momento en el que escribo este post uso zsh y fish, variaciones bien modernas de Bourne-Again Shell, en lo siguiente solo BASH.

Algo de Historia!

En el año 1970 Steve Bourne en algún lugar de los Laboratorios Bell de AT&T, desarrolló el Bourne Shell, mejor conocido como sh, que luego en 1977 fue incluido por primera vez en UNIX Versión 7.

En el mismo año de 1970 Bill Joy crea el C-Shell conocido como csh, las primeras versiones se distribuyeron con el sistema operativo 2BSD en 1978. Aunque csh tiene funciones que en su momento no tenía sh, como por ejemplo, los muy útiles, historial, control de procesos y creación de alias de comandos, era incompatible con sh. Este intérprete sufrió una evolución bien interesante y todas sus funcionalidades fueron portadas a Tcsh el cual ha sido el intérprete por defecto en los sistemas FreeBSD.

En 1980 David Korn también en algún lugar de Laboratorios Bell de AT&T, retomó el desarrollo de sh y luego con la contribución de Mike Veach y Pat Sullivan, fusionaron las características de sh y csh creando KornShell o mejor conocido como ksh, el cual fue difundido en 1983 en USENIX . Este fue el shell más utilizado y mejorado, hasta el punto de que en 1988 en su versión ksh88 se convirtió en un estándar.

Posteriormente, en 1988 Brian Fox de la Free Software Fundation creó "El nuevo Bourne Shell" :-D Bourne-Again Shell o simplemente BASH. Es un shell libre que toma código de BSD y GNU, compatible pero con ciertas diferencias respecto a ksh. Por seguir la normativa POSIX y por ser parte del proyecto GNU, éste se convirtió en el estándar de facto en los sistemas GNU/Linux, y por su carácter multiplataforma muchos sistemas como Mac, Windows y Android lo soportan.

Ksh y BASH son los Shell más utilizados, y sobre éstos tomaremos este viaje, solo cuando sea necesario lo destacaré.

Preparen bien sus maletas que ahora es que iniciamos la travesía, nos vemos en el siguiente capítulo donde abordaremos, la teoría de los comandos internos y externos, la impresión por pantalla y el uso de la ”~” en shell.

Salam Ailekum