Así es, hace tiempo pensé en convertirme en un desarrollador del proyecto KDE, desafortunadamente el framework QT es mas complejo de lo que esperaba y por falta de tiempo no he podido concretar esa meta personal. Aún así, seguí la guía de techbase de KDE para montar mi entorno de desarrollo.
Algo que la guía repetia con cierta frecuencia, eran algunas variaciones en los scripts según el shell que usaramos, mencionando a bash y zsh. En su momento no le dí la menor importacia, pero después de pensarlo un tiempo, decidí probar zshShell… WTF?
Una introducción rápida a lo que es un shell, es una manera de interactuar con el sistema operativo, enviando comandos que son interpretados y generalmente generan una salida. Actualmente mucha gente prefiere usar una GUI (Graphical User Interface), pero en lo personal, nada como usar el shell para acelerar la mayoría de las tareas que se realizan en el día a día del manejo de la computadora (mover archivos, crear archivos, bajar cosas, etc, etc…)
Y..?
Sin0 consideras esto interesante puedes pasar de lo que sigue…
BASH
Bash (Bourne Again SHell) es el shell de facto que por lo general incluyen las distros linux, BSD y Mac OS. ¿Por que? Ni idea… Bash nos permite una administración del sistema con muy completa, mediante un poco de scripting básico. Tiene un buen manejo de redireccionamiento de E/S (I/O) y permite hacer algunas operaciones aritmeticas dentro del shell ni iniciar un proceso nuevo. Pero aún así, hay caracteristicas de zsh tiene y bash no.
ZSH
ZSH (Z SHell) es un shell mas avanzado que bash, primeramente tiene un mejor sistema de autocompletado que bash ya que este puede ser programado para ayudar a completar no solo comandos, sino también para los argumentos de dichos comando. Bash el sistema de autocompletado no viene activado por default en algunas distros.
En zsh se puede elegir el tipo de keybinding que se desea usar, esto significa que si eres usuario de VIM o EMACS, puede usar este esquema en el teclado y sentirte como en casa al trabajar con el shell, aunque soy usuario de VIM, he encontrado un tanto revoltoso el usar la línea de comando al estilo VIM, ya que hay estoy muy acostumbrado a la edición normal. Si no manejas ninguno de los dos editores, escoge EMACS, la linea del shell se comportara como en bash.
Una opción agradable fue encontrar que zsh trae algunos temas para el prompt, en lo personal el tema de elite2 es genial.
Por último de las opciones mas útiles que encontre el zsh la capacidad de poder compartir el historial atravez de las sesiones abiertas, así que sí tecleamos un comando complejo y lo queremos llevar a otra sesión, simplemente damos un enter y el history del nuestro shell se abrá actualizado.
Bueno he encontrado razones de peso para cambiar mi shell a zsh, así que bye bye bash, hello zsh!!
Links
http://zshwiki.org/home/ -> Wiki de ZSH
http://zsh.sunsite.dk/FAQ/ -> El FAQ
http://zsh.sourceforge.net/Guide/zshguide.html -> Guía de usuario
Junio 5, 2009 a las 9:53 pm
Muy buena tu descripción de ambos shells, estaba buscando cuales eran las razones para cambiar de uno a otro, ya que mucho se abanderan pero sin dar argumentos válidos. Con tu post me queda más claro y creo que iré en manos a la obra para probar este shell.
La única acotación que quisiera hacerte es acerca de lo que dices de las distribuciones que traen Bash por defecto, es cierto que en la gran mayoría de distribuciones de linux es así, pero te equivocas con respecto a los BSD, ya que OpenBSD trae Ksh por default y en el caso de FreeBSD trae tcsh o sh, en ambos he tenido que instalar el Bash, una vez terminada la instalación del sistema, para sentirme más cómodo.
Y el porqué lo trae la mayoría? quizás por el hecho de que en su momento fue una notable mejora al “Bourne Shell” (sh) que traían los antiguos Unix, por otra parte es el shell escrito originalmente para el proyecto GNU lo que hace que indudablemente fuera el preferido desde un principio para las distribuciones GNU/Linux.
Aun tengo eso si, la sensación de que no está claro si realmente es Zsh mejor que otras shells. Quizás para la comodidad del usuario en el momento de teclear órdenes y más órdenes, pero que hay del manejo del lenguaje? por ejemplo Ksh se le elogia que su sistema de scripting es tan potente que se ha comparado con lenguajes como perl y awk, es decir un lenguaje de programación completo, que respeta POSIX y es desde siempre altamente compatible con Bash.
Todavía queda analizar el aspecto de seguridad para el sistema. A probar con este shell y aprender su uso ya que nunca se sabe cuando tendrás que enfrentarte a un equipo que solo traiga este shell y ningún otro y además no puedas instalar uno ya conocido… no faltan los casos raros XD. Aparte de eso, seguiré investigando más a fondo cuales son las reales fortalezas y debilidades de cada uno.
Saludos.
Junio 5, 2009 a las 10:31 pm
Saludos Eduardo!
Gracias por tu comentario, permiteme compartirte un poco mi experiencia con algunos shells.
Soy un usuario ArchLinux, una distro minimalista y bastante comoda a mi gusto. Cuando la instale, traia BASH por defecto, y algunas opciones como el autocompletado y la configuración del prompt no eran muy de mi agrado. Ya llevo algún tiempo usando vim, y realmente es molesto teclear de una manera “convencional”. Esto fue un gran plus a favor de ZSH.
Por otra parte para mucho de mi scripting en shell utilizo Python, lo cual me ha permitido resolver mis problemas de shell de una manera sencilla.
Aquí te dejo un link de comparación entre shells
http://en.wikipedia.org/wiki/Comparison_of_computer_shells
Recuerda: La mejor herramienta es la que resuelve problema.
Suerte y siente libre de comentar tus hallazgos.