¿Qué es el shell?
El Shell es un programa que lee los comandos que se teclean y los convierte en una forma entendible para el sistema Unix/Linux. Incluye sentencias básicas de programación que permiten tomar decisiones, realizar ciclos y almacenar valores en variables.
Debido a que el shell ofrece un lenguaje de programación interpretado, se pueden escribir, modificar y verificar programas rápidamente y de forma fácil.
El shell provee una interface a el sistema. Obtiene la información del usuario y ejecuta programas en base a esa información. Cuando el programa finaliza su ejecución, despliega la salida del programa.
Una de las grandes ventajas de los sistemas *nix es que el shell es más que un intérprete de comandos, también es un lenguaje de programación completo, con instrucciones de condicionales, asignación, ciclos y funciones.
Los diferentes tipos de Shell
Durante los más de 30 años que los sistemas *nix han existido se han creado una gran variedad de shells con diferentes características, la mayoría de estos shells están basados en 2 tipos de shell's: Bourne Shell (sh). Este shell ha sido la base para crear diferentes variantes del mismo, algunas de estas variantes son:
-Korn Shell (ksh)
-Bash o Bourne Again Shell (bash)
-POSIX shell (sh)
El Bourne Shell (sh) - El Bourne shell fue el primer shell que apareció en los sistemas Unix. El Bourne shell se encuentra normalmente en el directorio bin y su nombre de archivo es sh (/bin/sh). En adición a ser un intérprete de comandos el Bourne shell es un lenguaje de programación con una estructura similar al antiguo lenguaje de programación ALGOL.
El Bourne shell contiene las siguiente caracteristicas:
• Control de procesos
• Variables
• Expresiones regulares
• Control de flujo
• Control de Entrada/Salida
• Soporte a Funciones
Pero algunos de los problemas de el Bourne shell original son:
• No existe soporte a autocompletado de nombres de archivos (el uso del tabulador)
• No existe historial de comandos ni edición en línea
• Dificultad para ejecutar múltiples procesos en background.
El Bourne Again Shell (bash)
Practicamente todas las distribuciones de Linux utilizan bash como su reemplazo de sh. Debido a que bash es totalmente compatible con el Bourne shell, la mayoría de las distribuciones de Linux reemplazan el Bourne shell con bash (/bin/bash y /bin/sh son el mismo archivo) Algunas de las características del Bourne Again Shell son:
• Autocompletado de nombres de variables, usuarios, nombres de servidores, comandos y archivos
• Corrección de rutas de archivos en el comando cd
• Soporte a arrays de tamaño ilimitado
• Aritmética de enteros en cualquier base numérica (entre 2 y 64)