Introducción
Definición del shell
El shell es un término general que hace referencia a un programa que tiene como función la de proporcionar la interfaz entre el usuario y el sistema Unix. Es un intérprete de comandos.
Hay varios shells disponibles para las plataformas Unix.
Características de un intérprete de comandos
Los intérpretes de comandos disponibles en los entornos Unix tienen en común las siguientes funcionalidades:
-
Permiten a los usuarios ejecutar los comandos.
-
Proponen un juego de caracteres especiales que permiten desencadenar acciones concretas.
-
Tienen comandos internos y palabras clave mediante algunos de los cuales se puede programar (escritura de scripts de shell).
-
Utilizan archivos de inicialización que permiten a un usuario parametrizar su entorno de trabajo.
Cada shell propone sus propios caracteres especiales, comandos internos, palabras clave y archivos de configuración. Afortunadamente, los intérpretes de comandos más utilizados en la actualidad derivan todos del shell Bourne y tienen,por consiguiente, un cierto número de funcionalidades en común.
Intérpretes de comando (shells)
1. Historia
Bourne shell
El shell considerado más antiguo es el Bourne shell. Fue escrito en los años 1970 por Steve Bourne en los laboratorios AT&T. Además de ejecutar comandos, dispone de funcionalidades de programación. El Bourne shell ofrece menos funcionalidades que sus sucesores, y cada vez se utiliza menos. Algunas plataformas incluso la han eliminado de su sistema.
C-shell
Durante el mismo periodo, Bill Joy inventa el C-Shell (csh), incompatible con el Bourne, pero que ofrece funcionalidades suplementarias, como el histórico de comandos, el control de tareas, así como la posibilidad de crear alias de comandos. Estos tres aspectos se retomarán más tarde en el Korn shell. El C-shell, debido a su incompatibilidad con el Bourne shell, se utilizará poco en el mundo Unix.
Korn shell
En 1983, David Korn retoma el Bourne shell y lo enriquece. Este nuevo intérprete tomará el nombre de Korn shell (ksh). Este último se usará cada vez más, hasta el punto de convertirse en un estándar de hecho. El ksh88 (versión de 1988) es, junto con el Bourne Again shell (ver a continuación), el shell más utilizado actualmente.
En 1993, una nueva versión de Korn Shell ve la luz (ksh93). Presenta una retrocompatibilidad con ksh88, con algunas excepciones.
El Bourne Again shell
La Free Software Foundation propone el Bourne Again shell (bash). Este shell es el intérprete forjado como estándar en los sistemas Linux. Está a su vez disponible en estándar o en descarga para los sistemas Unix. Las últimas versiones del bash tenían los números 4 y 5.
El estándar POSIX
El objetivo del estándar POSIX (Portable Operating System Interface) es ofrecer un estándar válido inter-sistemas operativos....
Shells tratados en este libro
Este libro detalla las funcionalidades de Bourne Again shell y Korn shell (ksh88 et ksh93) y se indica la compatibilidad Bourne shell y POSIX.
Salvo que se especifique lo contrario, las funcionalidades abordadas son compatibles con estos shells (bash, ksh88, ksh93 y Bourne). Cuando no sea así, la lista de shells que soportan la funcionalidad se indicará con una tabla como la siguiente:
ksh |
bash |
ksh representa a ksh88 y a ksh93.
Los temas específicos del Korn shell 93 o del bash a partir de la versión 4 aparecen resaltados con las siguientes indicaciones:
ksh93 |
bash4 |
También se indicará la conformidad con el estándar POSIX para las principales funcionalidades o comandos de este libro:
posix |
Convenciones de escritura