1.- Introducción

Característica del interprete de comandos

Los intérpretes de comandos disponibles en los entornos Unix tienen en común las siguientes funcionalidades:

  • Proponen un juego de caracteres especiales que permiten desencadenar acciones concretas.
  • Tienen comandos internos y palabras clave mediante algunos de los cuales se pueden programar.
  • Utilizan archivos de inicialización que permiten a un usuario parametrizar su entorno de trabajo.

Cada Shell propone sus propios caracteres especiales, comandos internos, palabras clave y archivos de configuración. Por fortuna, los intérpretes de comandos actualmente más utilizados derivan todos del shell Bourne y tienen, por consiguiente, un cierto número de funcionalidades en común.

Un poco de historia

El Shell más antiguo es el Bourne Shell (sh). Fue creado en los años 70 por Steve Bourne en los laboratorios AT&T. Bourne pasó nueve años en los laboratorios de Bell con la séptima edición de Unix. Así como la Bourne Shell, él escribió el debugger y el sistema de UNIX, el segundo libro del adb en el sistema de UNIX, previsto para el público en general.

historia
El Bourne Shell fue el primero en destacar la convención de usar el descriptor de archivo 2 para mensajes de error, permitiendo un control mucho mayor del programa durante la creación del script, manteniendo los mensajes de error separados de la información.Aunque pretendía ser un intérprete de comandos interactivo, ganó popularidad como lenguaje de comandos por lotes o “scripting”, con la publicación, por parte de Brian W. Kernighan y Rob Pike, de The UNIX Programming Environment. Este fue el primer libro publicado comercialmente que presentaba el shell como un lenguaje de programación en forma de tutorial.

Todos los sistemas de tipo Unix tienen al menos un intérprete 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 como BSD, /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.

Durante el mismo periodo, Bill Joy incenta el C-Shell (csh), incompatible con el Bourne, pero ofreciendo funciones suplementarias como el histórico de comandos, control de tareas, y la posibilidad de crear alias de los comandos. El C-Shell no es muy usado en el mundo UNIX/Linux.

El Korn Shell,  fue desarrollado en 1983 por David Korn de los Laboratorios AT&T Bell. Es totalmente compatible con el Bourne Shell y también incluye muchos elementos del intérprete de comandos C, como historia de órdenes. La principal ventaja de ksh sobre otros intérpretes de comandos tradicionales de Unix, es su uso como lenguaje de programación. Desde su concepción, se le agregaron gradualmente muchas capacidades, mientras se mantenía amplia compatibilidad con el Bourne Shell.

La versión ksh93 es un super conjunto del estándar POSIX  soporta arrays asociativos y aritmética de punto flotante integrada. Sus funciones avanzadas para manejar archivos de comandos lo pusieron a la par con lenguajes de programación especializados como awk y perl. Para uso interactivo, ksh provee la habilidad de editar la línea de órdenes en modo WYSIWYG, usando la tecla cursor-arriba para llamar a una orden previamente usada y luego editar la orden como si los usuarios estuvieran en modo línea. Dos modos están disponibles, compatible con vi y emacs.ksh siempre intenta respetar el Shell Language Standard (POSIX 1003.2 : “Shell and Utilities Language Committee”).

Principales intérpretes de comandos

Los intérpretes más comunes son:

/usr/bin/sh

bourne_bash

Este ejecutable corresponde al Shell POSIX en ciertas plataformas o bien al Bourne Shell en otras. La página man de cada plataforma indica la localización de los ejecutables.

/usr/bin/bash

bourne_ Again Shell

Este ejecutable corresponde al Bourne Again Shell. El bash ejecuta los script utilizando las funcionalidades de los Shell’s Bourne, POSIX, y Bourne Again.

/usr/bin/csh

csh

Este terminal corresponde al C-Shell, no interpreta los scripts que usen las funcionalidades de los Shells Bourne, POSIX, Korn y Bourne Again. Sólo entiende su propia sintaxis.

/usr/bin/ksh

ksh

Este terminal corresponde al Korn Shell . El programa ksh interpreta los scripts utilizando funciones de los shells Bourne, POSIX y Korn.

¿Que shell hay que programar?

Los script escritos con la sintaxis Bourne se interpretará por todos los shell Bourne, POSIX, Korn y Bourne Again. Por lo que la sintaxis del Bourne Shell es la que asegura una mayor portabilidad entre shells kshbash se usan cada vez más, ya que aportan un cierto número de funcionalidades interesantes.

indiceEn ciertas plataformas (por ejemplo Solaris), los scripts de inicio se interpretan con Bourne Shell.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s