viernes, 10 de septiembre de 2010

Shell de UNIX

Histórico

• Thompson shell (sh) -- La primel shell Unix fue escrita por Ken Thompson en Bell Labs. Distribuida con la versión 1 hasta la 6 de Unix, desde 1971 a 1975. Es considerada muy rudimentaria por los estandarés modernos y no es usada en sistemas actuales. Existen algunas partes disponibles de la misma: Ancient UNIX Systems.

• PWB shell o Mashey shell (sh) -- Una versión de la shell de Thompson, creada por John Mashey y otros, mientras estuvieron en Bell Labs. Distribuida con el Programmer's Workbench UNIX, en 1976.

Shell de UNIX

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 Unix y 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 guión 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.



Link http://es.wikipedia.org/wiki/Shell_de_UNIX 







Otros tipos de shells



Categorías de shell

Pueden dividirse en cuantro categorías: tipo Bourne, tipo consola C, no tradicional e histórica.

Compatibles con Bourne shell



• 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, and tcsh.

Podemos de tallar algunos

Bourne Shell (sh): Bourne Shell era la shell por defecto de la versión 7 de Unix, y sustituyó a la Thompson shell, cuyo ejecutable tenía el mismo nombre: sh. Fue desarrollado por Stephen Bourne, de los Laboratorios Bell de AT&T, y vio la luz en la versión 7 de Unix distribuida a colegios y universidades. Todavía es una shell muy popular para cuentas Unix. En la mayor parte de los sistemas Unix el programa binario de la Bourne shell o un programa compatible se encuentra en /bin/sh. Link http://es.wikipedia.org/wiki/Bourne_shell

Objetivos principales





Esquema de elementos involucrados en una línea de órdenes.

Los principales objetivos de Bourne Shell eran aprovechar dos características claves del kernel de la versión 7:

• la lista de parámetros (argumentos) mucho más larga, limitada a 8192 bytes (anteriormente 127).

• las variables de entorno. Éstas eran una nueva característica de la versión 7, que permitía pasar mucha información a los programas a través del arranque.



Bourne-Again shell: Bash es un programa informático cuya función consiste en interpretar órdenes. Está basado en la shell de Unix y es compatible con POSIX. Fue escrito para el proyecto GNU y es el intérprete de comandos por defecto en la mayoría de las distribuciones de Linux. Su nombre es un acrónimo de Bourne-Again Shell (otro shell bourne) — haciendo un juego de palabras (born-again significa renacimiento) sobre el Bourne shell (sh), que fue uno de los primeros intérpretes importantes de Unix.

Link http://es.wikipedia.org/wiki/Bourne-Again_shell











Compatibles con la shell de C

• 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).

C Shell: es un lenguaje de programación, conocido también como csh y que fue desarrollado por Bill Joy en la Universidad de Berkeley, California. Se le considera más idóneo para programadores que Bourne Shell (sh), además de hacer reflejar que la informática se estaba haciendo más interactiva. Hoy día, el original C Shell, no goza de un amplio uso en Unix; ha sido superado por otros Shells [1], como Tenex C Shell (tcsh) basado en el codigo original C Shell, pero incorporando finalización de nombres a ficheros, y edición a comandos de línea, comparables a Korn Shell (Ksh), y el GNU Bourne-Again Shell (Bash).

Link http://es.wikipedia.org/wiki/Csh

TENEX : tcsh es una shell de UNIX basada y compatible con C Shell (csh). Es esencialmente C Shell con mejoras y características (programables) como autocompletado de nombres y edición en línea de comandos entre otras tantas cualidades.

La "T" de tcsh, proviene de la T de TENEX, que es un sistema operativo que inspiró a Ken Greer, autor de tcsh, por su singular capacidad de autocompletado de comandos.

Ken Greer trabajó en su proyecto tcsh a finales de los años 70 en la Universidad de Carnegie Mellon. Tiempo después Paul Placeway de la Universidad de Ohio continuó el desarrollo en los años 80.

Wilfredo Sánchez (ex líder de ingenieros de Mac OS X) trabajó en tcsh a principio de los 90's en [[MIT]. Desde entonces tcsh es mantenido por numerosas personas alrededor del mundo.

En 1984, tcsh remplazó a csh como el interprete de comandos por defecto en FreeBSD, y recientemente, en Mac OS X.



Link http://es.wikipedia.org/wiki/Tcsh

Otros o exóticos

• fish, una shell amigable e interctiva , 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

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:

sh ksh csh tcsh bash zsh

/etc/.login no no login login no no

/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

~/.cshrc no no yes yes no no

~/.login no no login login no no

~/.logout no no login login no no

/etc/profile login login no no i.login no

~/.profile login login no no login no

~/.bash_profile no no no no login 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:

• "no" significa que la shell no leerá el archivo en absoluto.

• "yes" significa que el archivo es siempre leído por el shell.

• "login" significa que el archivo es leído si la shell es una shell de sesión (loging shell).

• "n/login" significa que el archivo is leído si la shell no es una shell de sesión.

• "int." significa que un archivo es leído si es un shell interactivo.

• "i.login" significa que un archivo is leído si la shell es de sesión interactiva.













Otros o exóticos

• fish, una shell amigable e interctiva , 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)