lunes, octubre 28, 2013

Comparativa de las Shell de Linux.

Vivan las shell: bash en linux.
http://www.muylinux.com/wp-content/uploads/2011/12/bash-love.jpg



Todos los usuarios de UNIX/Linux lo saben, es un secreto a gritos. Al principio la relación es dificil pero con el tiempo uno se va acostumbrando a ella. Tanto que llega a ser como una extensión de las falanges. Es como si tuviese la capacidad de adivinar lo próximo que vas a hacer y tu pudieses intuir su respuesta. 
Se podría decir que conoces su tacto y su maleable forma. Está claro: Cada cual tiene su shell favorita y punto.

No vamos a tratar de cambiar la opinión de nadie pues los editores de Crastinia tambien tenemos nuestra Shell predilecta y con ella hemos pasado tantas horas que nos parece un buen momento para dedicarle algo de atención.

La historia de las Shell no es corta y la andadura comienza en 1971 con la Shell de Ken Thompson en los laboratorios Bell. En principio un programa independiente del núcleo con poco más de 900 líneas de código en C.

Esta fue la semilla de todo porque en 1977 llegarían las Bourne Shell Stephen Bourne   y a día de hoy nos encontramos con el siguiente árbol genealógico:



Aspectos Comunes entre Shells:

En el gráfico podemos ver unas cuantas y todas ellas tienen características en común. Esto tiene cierto sentido pues un administrador o usuario puede estar acostumbrado a manejar sh, pero ante el caso de enfrentarse al uso de bash le vendrá muy bien que las características básicas sean iguales

¿ Cuales son esas características ? Aquí enumeremos algunas de ellas:

  • Redirección de salida: En todas se redirecciona la salida o resultado de un comando con ">" y ">>"
  • Redirección de entrada:Así mismo la entrada se realiza con "<" y con  "<<"
  • Comentarios: Se emplea "#".
  • Procesos en background: Empleamos  "&" y con los comandos bg y fg podremos alternar entre procesos en backgroundy foreground.
  • Caracter comodín:El prácticamente universal "*"
  • Contenido de variables: El simbolo del dólar: "$"
  • Operadores AND y OR: "&&" y "||"

Como veis no se trata precisamente de detalles sin importancia, al contrario y conociendo esto al menos tendremos para empezar cuando nos enfrentemos a una Shell que no es la nuestra.


Aspectos Particulares de cada Shell:

Ahora bien, si estas en ese nuevo trabajo donde no usan la Shell de tus amores, sigue leyendo porque ese script genial que estás preparando va a fallar a menos que tengas en cuenta lo siguiente:


Variables de entorno: (Atención a esto)
Directorio por defecto ksh:  $HOME.
Directorio por defecto csh: $home.


Asignación de variables:
En ksh. i=6
En csh: set i 6
En ambos casos asignamos el valor 6 valor a la variable i.


Creación de Alias:
Con ksh : alias rm="rm -x"
Con csh: alias rm rm -x


En ambos casos hacemos que el comando alias ejecute por defecto la opción x ( la que queramos )


Existen muchas otras diferencias entre Shells y también carácterísticas incluidas por unas y no por otras, en este artículo podemos estudiar con detalle en qué se diferencian:

http://www.faqs.org/faqs/unix-faq/shell/shell-differences/

En este otro artículo de wikipedia se hace una comparación en detalle de las shell:




¿Cual tengo y cómo la cambio?

Supongamos que queremos cambiar nuestra shell actual a zsh, para ello ejecutaremos el comando "change shell" de la siguiente forma:

chsh -s /bin/zsh usuario

Ahora comprobemos que el cambio ha surtido efecto y veamos cual es nuestra shell:

echo $SHELL



¿Cual se recomienda usar?

Es  la pregunta que suele aparecer siempre que hay alguna comparativa, y la respuesta es siempre la misma: Depende de lo que se necesite o con lo que el usuario se encuentre más cómodo. Depende de la metodología de trabajo de cada cual y depende de con qué lógica de funcionamiento se sienta uno más identificado. 
En términos generales podemos decir que bourne shell ( la vieja sh ) ha caido en deshuso dado que no es la más potente para realización de scripts. 
Algo parecido le ocurre a csh cuya asignación de variables es menos flexible que con bash, y en el caso de ksh, recordemos que su versión original no era gratuita, aunque ya existen versiones que si lo son y funcionan exactamente igual que ksh. 

Quizá lás mas recomendables, al menos si se van a llevar a cabo tareas de scripting, serían bash y ksh.  Los siguientes artículos son de lectura recomendada para conecer en profundidad el uso de bash y ksh para realizar tareas de scripting y programación.

Que lío.Repiteme cuales hay.

La verdad es que no sólo existen las mencionadas aquí, hay decenas de consolas no muy conocidas cada una con sus particularidades, sin embargo bash hoy en día tiende a ser la consola por defecto.
  • bash: bourne again shell basada en la consola Bourne de UNIX. La más común
  • bsh : La consola en la que se basa bash.No es la más empleada.
  • tcsh: Basada en csh, con bastante uso en algunos ámbitos aunque no es la consola por defecto en las distribuciones más conocidas de Linux.
  • csh: La consola C.
  • ksh: Korn Shell. Desarrollada con la intencion de mejorar y ampliar funcionalidades de Bourne Shell y C Shell. Sus usuarios son fieles pero poco numerosos.
  • zsh: Z, una evolución de Korn Shell. 

Y... ¿Vosotros cual usais?

Ha llegado vuestro turno: Ampliad, corregid o comentad lo que veais oportuno, cualquier apunte productivo será muy grato para nosotros.




No hay comentarios:

Publicar un comentario