========================================= 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