¿Qué es un Shell?
Un shell es un programa que proporciona una interfaz entre un usuario y un núcleo del sistema operativo (SO). Un SO inicia un shell para cada usuario cuando éste se conecta o abre una ventana de terminal o consola.
Un kernel es un programa que:
- Controla todas las operaciones del ordenador.
- Coordina todas las utilidades que se ejecutan
- Asegura que las utilidades que se ejecutan no interfieran entre sí ni consuman todos los recursos del sistema.
- Programa y gestiona todos los procesos del sistema.
Al interconectarse con un núcleo, un shell proporciona una forma para que un usuario ejecute utilidades y programas.
Entorno de usuario
El shell también proporciona un entorno de usuario que se puede personalizar utilizando archivos de inicialización. Estos archivos contienen la configuración de las características del entorno de usuario, como:
- Rutas de búsqueda para encontrar comandos.
- Permisos por defecto en los archivos nuevos.
- Valores para las variables que utilizan otros programas.
- Valores que se pueden personalizar.
¿Cuáles son los diferentes Shells?
Las siguientes secciones describen los shells del sistema operativo mayormente disponibles en el sistema operativo UNIX/Linux. También se describen las características de los shells y sus indicaciones por defecto.
El shell Bourne
El shell Bourne (sh), escrito por Steve Bourne en AT&T Bell Labs, es el shell original de UNIX. Es el shell preferido para la programación de shell debido a su compacidad y velocidad. Una de las desventajas del shell Bourne es que carece de características para el uso interactivo, como la capacidad de recuperar comandos anteriores (historial). El shell Bourne también carece de aritmética incorporada y manejo de expresiones lógicas.
El shell Bourne es el shell por defecto del sistema operativo Solaris. Es el shell estándar para los scripts de administración del sistema Solaris. Para el shell Bourne el:
- Nombre de ruta completa del comando es /bin/sh y /sbin/sh.
- El prompt por defecto del usuario no root es $.
- El prompt por defecto del usuario root es #.
El shell C
El shell C (csh):
- Es una mejora de UNIX escrita por Bill Joy en la Universidad de California en Berkeley.
- Incorpora características para el uso interactivo, como los alias y el historial de comandos.
- Incluye cómodas características de programación, como aritmética incorporada y una sintaxis de expresión similar a la de C.
Para el shell C el:
- Nombre de la ruta completa del comando es /bin/csh.
- El prompt por defecto del usuario no root es hostname %.
- El prompt por defecto del usuario root es el nombre de host #.
El shell Korn
El shell Korn (ksh):
- Fue escrito por David Korn en AT&T Bell Labs
- Es un superconjunto del shell Bourne.
- Soporta todo lo del shell Bourne.
- Tiene características interactivas comparables a las del shell C.
- Incluye prácticas características de programación como aritmética incorporada y matrices, funciones y facilidades de manipulación de cadenas similares a las de C.
- Es más rápido que el shell C.
- Ejecuta scripts escritos para el shell Bourne.
Para el shell Korn el:
- Nombre de ruta completa del comando es /bin/ksh.
- El prompt por defecto del usuario no root es $.
- El prompt por defecto del usuario root es #.
El shell GNU Bourne-Again
El shell GNU Bourne-Again (bash):
- Es compatible con el shell Bourne.
- Incorpora características útiles de los shells Korn y C.
- Tiene teclas de flecha que se asignan automáticamente para recuperar y editar comandos.
Para el shell GNU Bourne-Again el:
- Nombre de la ruta completa del comando es /bin/bash.
- El prompt por defecto para un usuario no root es bash-x.xx$. (Donde x.xx indica el número de versión del shell. Por ejemplo, bash-3.50$)
- El prompt por defecto del usuario root es bash-x.xx#. (Donde x.xx indica el número de versión del shell. Por ejemplo, bash-3.50$#)
Aquí hay una breve comparación de los 4 shells y sus propiedades.
Shell | Path | Default Prompt (non-usuario root) | Instrucción por defecto (usuario root) |
---|---|---|---|
El shell Bourne (sh) | /bin/sh y /sbin/sh | $ | # |
El shell C Shell (csh) | /bin/csh | % | # |
The Korn Shell (ksh) | /bin/ksh | $ | # |
The GNU Bourne-Again Shell (Bash) | /bin/bash | bash-x.xx$ | bash-x.xx# |