=========================================
Diferencias finales entre Shells de UNIX®
=========================================

Este tutorial es una obra en progreso

Contenidos

       Introducción
       Shell de Thompson
       Shell de Bourne
       Shell C
       Otros Shells
       Conclusión

Introdución

Los Intépretes de comandos (shells) de UNIX descriptos en este tutorial
incluyen a: Osh (un porte del shell de Thompson), sh (y los shells
similares a sh), csh (y shells similares a csh) y otros.

¿Cuáles son las diferencias críticas y/o similaridades entre varios
shells de UNIX? Las diferencias generalmente se refieren a sus
particularidades de sintaxis en la línea de comandos.

En las siguientes secciones, cada línea de comando de ejemplos está
nomenclada por "Ecl [123]:". Podrá tener una idea de cómo difiere el
shell comparando el "Ecl [123]:" de cada sección contra su
correspondiente Ecl [123]:" en las otras secciones.

Las similaridades entre los shells de UNIX descriptos en este tutorial
son más importantes que sus diferencias. Esto se debe al hecho de que
cuando aprende cómo usar un shell, en efecto también está aprendiendo
cómo utilizar los otros. En esencia, cada uno de los shell juega el
mismo rol desde el punto de vista del usuario. Ese rol es el de actuar
como una inferfaz de funcionalidad disponible en el sistema operativo
UNIX.

Shell de Thomson

En la historia de UNIX, el shell de Thompson precede al Shell de Bourne
y al shell de C, y su lenguaje de comandos es un subconjunto de dichos
shells. El flujo de control en el shell de Thomson está implementado via
if(1) y goto(1), los cuales son utilidades externas al shell. Sin
embargo, el control de flujo en los shell de Bourne y C ya están
incorporado en cada shell.

Un porte mejorado del shell de Thomshon está disponible en la SDF en
'/usr/pkg/bin/osh'. Puede leer su manual ejecutando 'man osh' en el
prompt de comandos. También puede leer su manual en línea si prefiere
hacerlo.


Ecl 1:

% setenv PATH /usr/pkg/bin:/usr/bin:/bin ; printenv PATH
/usr/pkg/bin:/usr/bin:/bin

Ecl 2:

% which osh if goto ^ ( tr '\n' ' ' ; echo ) ^ sed 's/.*/ls -l &/' ^ osh
-r-xr-xr-x  1 root  wheel   7880 Jul 18 21:37 /usr/pkg/bin/goto
-r-xr-xr-x  1 root  wheel  14160 Jul 18 21:37 /usr/pkg/bin/if
-r-xr-xr-x  1 root  wheel  38216 Jul 18 21:37 /usr/pkg/bin/osh

Ecl 3:

% if -r /netbsd echo /netbsd: Is readable ; \
 if -w /netbsd echo /netbsd: Is writable
/netbsd: Is readable

..

Note que el comando 'setenv' indicado arriba no está disponible en el
Shell de Thompson original. Este es sólo una de las mejoras de osh.
¿Deseamos decir algo sobre el shell PWB?


Shell de Bourne

Este incluye el shell de Bourne original, sus derivados, y aquellos que
operan de forma similar. Un shell de Bourne verdadero, o un shell
similar a Bourne sirve típicamente como un intérprete de comandos en la
mayoría de los sistemas UNIX.

Encontrará un shell que opera de manera similar al shell de Bourne en la
SDF en '/bin/sh', También puede leer su manual ingresando 'man sh' en el
prompt de comandos. También puede leer su manual en línea si prefiere
hacerlo así.


Ecl 1:

$ PATH=/usr/pkg/bin:/usr/bin:/bin ; export PATH ; printenv PATH
/usr/pkg/bin:/usr/bin:/bin

Ecl 2:

$ ls -l `which sh ksh bash`
-r-xr-xr-x  1 root  wheel  298431 Oct 24  2005 /bin/ksh
-r-xr-xr-x  1 root  wheel  199717 Oct 24  2005 /bin/sh
-rwxr-xr-x  1 root  wheel  963696 Jun  4 08:57 /usr/pkg/bin/bash

Ecl 3:

$ if test -r /netbsd ; then echo /netbsd: Is readable ; fi ; \
> if test -w /netbsd ; then echo /netbsd: Is writable ; fi
/netbsd: Is readable


Shell C

Este incluye al Shell C original, sus derivados, y aquellos que operan
en forma similar.

El Shell C está disponible en la SDF como '/bin/csh'. Puede leer su
manual ejecutando 'man csh' en el prompt de comandos. También puede leer
su manual en línea si prefiere hacerlo así.

Ecl 1:

% setenv PATH /usr/pkg/bin:/usr/bin:/bin ; printenv PATH
/usr/pkg/bin:/usr/bin:/bin

Ecl 2:

% ls -l `which csh tcsh zsh`
-r-xr-xr-x  1 root  wheel  214333 Oct 24  2005 /bin/csh
-r-xr-xr-x  1 root  wheel  459408 Jun 29  2005 /usr/pkg/bin/tcsh
-r-xr-xr-x  2 root  wheel    6352 May 11  2007 /usr/pkg/bin/zsh

Ecl 3:

% if (-r /netbsd) echo /netbsd: Is readable ; \
 if (-w /netbsd) echo /netbsd: Is writable
/netbsd: Is readable


Otros shells

¿Se necesita esta sección?

Esta sección incluirá información sobre el Shell Z, rc (el Shell AT&T
Plan 9) y otros Shells de UNIX que no caen en ninguna de las categorías
anteriores.

Conclusión

Extenderse en las diferencias/similitudes en vista del contenido
precedente. Una de las cosas importantes a notar es que a pesar de que
existen diferencias, las similaridades son más importantes en mi
opinión. Después de todo, son las similaridades las que permiten al
usuario cambiar de un shell a otro con poca dificultad.

UNIX® es una marca registrada de The Open Group.

$Id: shells.html,v 1.1 2008/12/19 16:35:57 jwodder Exp $
Traducción: peron