Shell de Bourne

El Bourne Shell fue un interprete de comandos desarrollado a partir de finales de 1976 por Stephen Bourne de los Laboratorios Bell, en vista de reemplazar la limitada Shell de Thompson anterior.

Aunque podia utilizarse como un interprete de comandos interactivo, no era amistoso en este sentido, realmente estaba pensado para oficiar de lenguaje de guionado, y contenia la mayoria de las caracteristicas que se asocian popularmente para producir programas estructurados.

El Shell original de Bourne no suele utilizarse mas, pero todos los sistemas POSIX actuales suelen incorporar alguna implementacion moderna derivada de esta shell sh por razones de compatibilidad absoluta y de ejecucion de guiones de programacion.

Historia

El Shell de Thompson tipico de las primeras ediciones de Unix se habia demostrado limitado, por lo que Stephen Bourne decidio implementar una version radical que lo superara en potencia y posibiliades.

Para ello desarrollo a lo largo de 1977 una version que no retuviese compatibilidad con el de Thompson, inspirandose en las modalidades de programacion utilizadas por su lenguaje preferido por entonces, el ALGOL68, e incorporando macros de programacion. Para 1979 su shell (que tambien recibio el nombre de fichero sh en la unix V7), reemplazo al vetusto de Thompson.

A principios de la decada de 1980 el shell de Bourne era uno de los mas prometedores.. En vista de sus posibilidades, fue expandida por la AT&T, lo que lo termino de colocar en el podio uno de los shell estandares y el mas utilizado (aunque tambien, uno de lenta ejecucion). A finales de esta decada su uso se vio disociado.

Reglas

La antigua shell de Bourne tienen reglas universales que inpirarian a Bash. Originalmente, incorpora las siguientes palabras clave. if then else elif fi case in esac for thile until do done { ].

Sintaxis

Palabra: secuencia de caracteres no nulos nombres: una secuencia de letras que comienzan con una letra, digitos, o guiones bajos digitos: 0 1 2 3 4 5 6 7 8 9

comando-simple
(lista-de-comandos)
for nombre do lista-de-comandos donde
for nombre in palabra... do lista-de-comandos done
while lista-de-comandos do lista-de-comandos done
until lista-de-comandos do lista-de-comandos done
case palabra in case-part... esac
if lista-de-comandos then lista-de-comandos else-parte fi

Sintactica

Caracter Significado
| cano
&& simbolo andf
|| simbolor orf
; separador de comandos
;; delimitador de case
& ejecuta comando en segundo plano
(...) agrupa comandos
< redireccion de entrada
<< entrada desde un documento
> creacion de salida
>> agregar a la salida

Patrones

Los patrones de coincidencia pueden aplicarse mediante

  • *: para cualquier caracter incluyendo el nulo
  • ?: patron de coincidencia para cualquier caracter
  • [...]: coincidencia de cualquiera de los caracteres entrecorchetados

Sustitucion

La shell de bourne sustituye de este modo

  • ${...} sustituye variables de shell
  • '...' sustituye salida de comandos

Citado

El citado se puede hacer con:

  • \ cita el siguiente caracter
  • '...' cita los caracteres entre apostrofes
  • "..." cita los caracteres entrecomillados, excepto $, ', \ y ".

Ver: Tutorial de Shell de Bourne