El shell
El intérprete de comandos es la interfaz entre el usuario y el sistema operativo. Por esta razón, se le da el nombre inglés de shell, que significa "caparazón".
El shell es un fichero ejecutable (programa) que actúa como un intermediario entre el sistema operativo y el usuario que introduce comandos en modo texto. Su función es la de leer la línea de comandos, interpretar su significado, ejecutar el comando y después arrojar el resultado por medio de las salidas.
Existen varios shells, entre los que destacamos los siguientes: sh (llamada "Bourne shell"), bash ("Bourne again shell"), csh ("C Shell"), tcsh ("Tenex C shell"), ksh ("Korn shell") y zsh ("Zero shell"). Generalmente, sus nombres coinciden con el nombre del ejecutable.
Cada usuario tiene un shell predeterminado, el cual se activará cuando el usuario entre en el sistema o cuando lo ejecute explícitamente. El shell predeterminado se especifica en el archivo de configuración /etc/passwd, en el último campo de la línea que corresponde al usuario. Es posible cambiar de shell durante una sesión, para lo cual solo se debe ejecutar el fichero ejecutable correspondiente, por ejemplo: /bin/bash.
El shell se inicia tras leer su configuración global completa (se encuentra en un archivo dentro del directorio /etc) y después de leer la configuración propia del usuario (son archivos ocultos cuyos nombres comienzan con un punto y se ubican en el directorio casa del usuario, es decir, /home/user_name/.configuration_file). Paso seguido, aparece el siguiente indicador o prompt del sistema, el cual puede modificarse para que muestre otra información que nos interese más:
equipo:/directorio/actual$
De manera predeterminada, para la mayoría de los shells, el prompt del sistema consiste en el nombre del equipo seguido de dos puntos (:), el directorio actual y después un carácter que indica el tipo de usuario conectado:
- "$" especifica un usuario normal
- "#" especifica el usuario administrador, llamado "root"
Los comandos que se ejecutan individualmente en los intérpretes, pueden usarse a modo de guión si se escriben en ficheros de texto con permiso de ejecución (shell scripts), de este modo, cuando un usuario necesita hacer uso de varios comandos consecutivos, puede escribirlos en un fichero de texto marcado como ejecutable y dárselo al shell para que lo ejecute línea por línea. Sin ser el shell estrictamente un lenguaje de programación, al proceso de crear shell scripts se le denomina programación shell.
El intérprete que vamos a utilizar se llama bash, que fue escrito para el proyecto GNU y es el intérprete de comandos por defecto en la mayoría de las distribuciones de GNU/Linux. Su nombre es un acrónimo de Bourne-Again Shell (otro shell bourne). Bourne shell (sh) fue uno de los primeros intérpretes importantes de Unix.
La sintaxis de órdenes de bash es un superconjunto de instrucciones basadas en la sintaxis del intérprete Bourne. La especificación definitiva de la sintaxis de órdenes de bash, puede encontrarse en el Bash Reference Manual distribuido por el proyecto GNU.
El shell bash incluye también ideas tomadas desde el Korn Shell (ksh) y el C Shell (csh), como la edición de la línea de órdenes, el historial de órdenes, la pila de directorios, etc. Cuando se utiliza como un intérprete de órdenes interactivo, bash proporciona lo siguiente pulsando la tecla TAB:
- Autocompletado de nombres de programas.
- Nombres de archivos.
- Nombres de variables.
- Nombres de opciones.
- Etc.
Licencia: licencia de software libre GPL