Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Este artículo trata sobre el intérprete típico de Unix. Para otros usos de este término,
véase terminal (informática) .
Una Shell de Unix o también shell, es el término usado en informática para referirse a
un intérprete de comandos, el cual consiste en la interfaz de usuario tradicional de los
sistemas operativos basados en Unixy similares como GNU/Linux.
Mediante las instrucciones que aporta el intérprete, el usuario puede comunicarse con
el núcleo y por extensión, ejecutar dichas órdenes, así como herramientas que le permiten
controlar el funcionamiento de la computadora.
Los comandos que aportan los intérpretes, pueden usarse a modo de guion si se escriben
en ficheros ejecutables denominados shell-scripts, de este modo, cuando el usuario
necesita hacer uso de varios comandos o combinados de comandos con herramientas,
escribe en un fichero de texto marcado como ejecutable, las operaciones que
posteriormente, línea por línea, el intérprete traducirá al núcleo para que las realice. Sin
ser un shell estrictamente un lenguaje de programación, al proceso de crear scripts de
shell se le denomina programación shell o en inglés, shell programming o shell scripting.
En el sentido más genérico del término, shell significa cualquier intérprete que los usuarios
usen para escribir comandos. Su etimología proviene del uso natural de consolas en
computadores funcionando bajo unix antaño, cuando los usuarios conectaban al
computador central, lo hacían mediante consolas, (shells) por las cuales a través de un
intérprete, hacían inicio de sesión y manejaban la computadora principal. Posteriormente,
con la proliferación de los computadores personales y su filosofía monousuario, un
computador por usuario (entiéndase lo contrario de la filosofía inicial de Unix, un
computador, muchos usuarios conectados por terminales), se desarrolló un software que
emulase las características principales de las consolas físicas, a modo de poder seguir
usándolas como clientes en un computador o núcleo que comprendiera la convención
estándar usada para configurar y llevar a cabo tareas de administración de emergencia
con servidores basados en Unix.
Los usuarios de Unix y similares, pueden elegir entre distintos shells (programa que se
debería ejecutar cuando inician la sesión, véase bash, ash, csh, Zsh, ksh, tcsh). Las
interfaces de usuario gráficas para Unix, como son GNOME, KDE y Xfce pueden ser
llamadas shells visuales o shells gráficas. Por sí mismo, el término shell es asociado
usualmente con la línea de comandos. En Unix, cualquier programa puede ser un shell de
usuario. Los usuarios que desean utilizar una sintaxis diferente para redactar comandos,
pueden especificar un intérprete diferente como su shell de usuario.
El término shell también hace referencia a un programa particular, tal como el Bourne
shell, sh. El Bourne shell fue el shell usado en las primeras versiones de Unix y se
convirtió en un estándar de facto; todos los sistemas similares a Unix tienen al menos un
shell compatible con el Bourne shell. El programa Bourne shell se encuentra dentro de la
jerarquía de archivos de Unix en /bin/sh. En algunos sistemas, tal
comoBSD, /bin/sh es un Bourne shell o un equivalente, pero en otros sistemas como
muchas distribuciones de Linux, /bin/sh es un enlace simbólico a un shell compatible con
más características (como Bash).POSIX especifica su shell estándar como un subconjunto
estricto del Korn shell.
Índice
[ocultar]
1Categorías de shell
o 1.1Compatibles con Bourne shell
o 1.2Compatibles con la shell de C
o 1.3Otros o exóticos
o 1.4Archivos de configuración para shells
o 1.5Histórico
2Shells no Unix
3Véase también
4Bibliografía
5Enlaces externos
Categorías de shell[editar]
Pueden dividirse en cuatro categorías: tipo Bourne, tipo consola C, no tradicional e
histórica.
Compatibles con Bourne shell[editar]
Bourne shell (sh) -- Escrita por Steve Bourne, cuando estaba en Bell Labs. Se
distribuyó por primera vez con la Version 7 Unix, en 1978, y se mejoró con los años.
Almquist shell (ash) -- Se escribió como reemplazo de la shell Bourne con licencia
BSD; la sh de FreeBSD, NetBSD (y sus derivados) están basados en ash y se han
mejorado conforme a POSIX para la ocasión.
Bourne-Again shell (bash) -- Se escribió como parte del proyecto GNU para proveerlo
de un superconjunto de funcionalidad con la shell Bourne.
Debian Almquist shell (dash) -- Dash es un reemplazo moderno de ash en Debian.
Korn shell (ksh) -- Escrita por David Korn, miestras estuvo en Bell Labs.
Z shell (zsh) -- Considerada como la más completa: es lo más cercano que existe en
abarcar un superconjunto de sh, ash, bash, csh, ksh, y tcsh.
Compatibles con la shell de C[editar]
C shell (csh) escrita por Bill Joy, mientras estuvo en la University of California,
Berkeley. Se distribuyó por primera vez con BSD en 1979.
TENEX C shell (tcsh).
Otros o exóticos[editar]
fish, una shell amigable e interactiva, lanzada por primera vez en 2005.
mudsh, una shell inteligente al estilo de los videojuegos que opera como un MUD.
zoidberg, una shell modular escrita en Perl, configurada y de operación
completamente en Perl.
rc, el shell por defecto de Plan 9 from Bell Labs y Version 10 de Unix escrita por Tom
Duff. Se han hecho ports para Inferno y para sistemas operativos basados en Unix.
es shell (es), una shell compatible con RC escrita a mediados de los 90.
scsh (Scheme Shell)
Archivos de configuración para shells[editar]
Un shell lee archivos de configuración en múltiples circunstancias bajo diferentes
dependencias de la shell. Esta tabla muestra los achivos de configuración de las shells
más populares:
/etc/csh.cshrc no no no yes no no
/etc/csh.login no no no login no no
~/.tcshrc no no no yes no no
~/.bash_login no no no no login no
~/.bashrc no no no no n/login no
/etc/zshenv no no no no no yes
/etc/zprofile no no no no no login
/etc/zshrc no no no no no int.
/etc/zlogin no no no no no login
/etc/zlogout no no no no no login
~/.zshenv no no no no no yes
~/.zprofile no no no no no login
~/.zshrc no no no no no int.
~/.zlogin no no no no no login
~/.zlogout no no no no no login
Explicación: