El atareao atareao  

Me cambio de shell, de Bash a Zsh

Sin lugar a dudas este año es un año de cambios al menos para mi. Durante este año te he ido hablando en los diferentes episodios del podcast sobre algunos de estos cambios. La mayoría relacionados con la tecnología y en general, y por supuesto con Linux, y el Open Source, aunque de cuando en cuando, se me escapa algo que no tiene que ver. Pero en general, si, normalmente sobre Linux, y el basto ecosistema de herramientas y aplicaciones que hay en en torno a él. Y si, sobre algo me he repetido es sobre la terminal, porque como me dijeron en un reciente episodio del podcast, soy un friki de Linux y la terminal. Y este nuevo cambio está relacionado precisamente con la terminal, y en concreto con la shell. Por que lo que me temía finalmente ha llegado, me cambio de shell, de Bash a Zsh.

Si, lo que has leído, me cambio de Bash a Zsh, me cambio de shell, de intérprete de comandos. En este episodio del podcast, te cuento que es eso de la shell, y las razones que me han motivado a este cambio de shell.

Me cambio de shell, de Bash a Zsh

Me cambio de shell, de Bash a Zsh

¿Que es una shell o intérprete de comandos?

Antes de nada, por si acabas de llegar aquí, y no sabes que es esto de una shell, decirte que no es mas que un intérprete de comandos. Una aplicación a la que le das unas instrucciones y las ejecutas no es mas. No es mas que eso una aplicación.

Los intérpretes de comandos no son exclusivos de Linux, ni mucho menos, yo lo he utilizado en Windows, hace ya mas tiempos que la tana.

Así que cuando alguien te hable de una shell, simplemente se está refiriendo a eso, a un intérprete de comandos. En Linux existen diferentes shell. Probablemente la mas extendida es Bash, pero tienes otras Como

  • ksh Korn Shell
  • tcsh Tenex C Shell
  • fish
  • zsh Z shell

Por otro lado, la terminal o mejor dicho emulador de terminal, no es mas que una aplicación que abre una ventana donde puedes interactuar con ese intérprete de comandos. Al igual que en el caso de la shell, en el caso de emulador de terminal, también tienes unos pocos. En particular, yo te recomiendo dos, sobre los que he hablado largo y tendido,

  • Alacritty
  • Kitty

Sobre las ventajas de la terminal

Sinceramente creo que en la mesura está la virtud. Y es que estar acostumbrado a utilizar el navegador de archivos, la terminal, y otras herramientas es fantástico. Centrarse en una sola herramienta, en ocasiones es contraproducente.

Esto lo digo, en referencia al comentario de soy un friki de Linux y la terminal. Y es que hace unos días, estaba probando unas extensiones de GNOME Shell, y quería borrar unos archivos o moverlos, ahora no recuerdo, desde el gestor de archivos, desde Nautilus o Files, como le dicen ahora… ¿Te puedes creer que no me aclaraba?.

Estoy tan acostumbrado a pasar mis días en la terminal, que al enfrentarme al escritorio, me sentía raro. Y te puedo asegurar que me costó darme cuenta de que estaba haciendo. De ahí mi afirmación de que en la mesura está la virtud.

De las razones de mi resistencia al cambio

Antes de explicarte porque cambio de Bash a Zsh, quería explicarte porque no había cambiado antes. Y es que, si bien, he probado diferentes intérpretes de comandos como puede ser fish, lo que mas me preocupaba eran los scripts.

Lo cierto es que actualmente todo lo que hago de scritping es en Bash y Python. Y tiene que seguir siendo así por que la mayoría de las máquinas con las que me relaciono lo utilizan. Y sin embargo no conozco ninguna que utilice ni zsh ni fish.

Por otro lado con Bash-it me encuentro realmente cómodo, y todos mis scripts y herramientas de uso habitual, están perfectamente integradas con este framework, y ni tenía tiempo ni quería cambiarlas.

Y no te creas que son pocas, porque tengo diferentes procesos automatizados con diferentes scripts que me facilitan y simplifican enormemente la vida digital. Por ejemplo los scripts para empaquetar y subir los paquetes a repositorios.

¿Porque cambiar de Bash a Zsh?

Según lo que me he podido documentar, cuando MacOS cambió a Catalina dejó de lado Bash para adoptar Zsh. Esto es así, por cuestiones de licencias. Durante muchos años MacOS estuvo utilizando una versión verdaderamente desactualizada de Bash, por la misma razón. Y es que la versión versión 3 de la GPL establece determinadas restricciones que llevaron a Apple, mantener una versión desactualizada de Bash, para finalmente cambiar de shell, y adoptar Zsh.

No creas que Bash ha sido el único perjudicado, del software que lleva MacOS, cada vez queda menos licenciado bajo GPL. Y esto es algo, que no solo se circunscribe a MacOS. La realidad es que cada vez se utiliza menos esta licencia.

Esto me hace preguntarme a quien benefician estas restricciones ¿benefician al usuario final, a los desarrolladores o a quien?. Lo cierto, es que este movimiento de MacOS de Bash a Zsh, no creo que haya sido nada beneficioso para Bash. Realmente, detrás de MacOS hay una vibrante comunidad de desarrolladores, que participan y hacen crecer el código.

Pero, esto son mis propias reflexiones.

Diferencias entre Bash y Zsh

Claro, que entonces te estarás preguntando ¿que razones me llevan a cambiar a zsh?. Yo no tengo problemas de licencia, o al menos por ahora, aunque, como he comentado en alguna ocasión, la mayoría de mi código está bajo licencia MIT, por razones similares a las aducidas anteriormente.

No te pienses que zsh es mucho mas moderno que Bash. Este último vió la luz en 1989 y el primero en 1990. Sin embargo, Zsh ha incorporado no solo algunas de las características de Bash, si no también de otras shell.

Sin embargo, no tengo una justificada razón para cambiar de Bash a Zsh. Con el paso del tiempo ambas shell han ido mejorando e incorporando nuevas características que los hacen mas y mas potentes.

El comando cd

Tanto Bash como Zsh soportan la expansión de directorios. Es decir, cuando comienzas a escribir un directorio y utilizas el tabulador esta se autocompleta. Sin embargo, aquí tiene una ventaja zsh, y es que te permite seleccionar el directorio de forma interactiva.

Corrección

Igual que en el caso anterior, ambos, Bash y Zsh permiten la corrección, tanto a la hora de cambiar de directorio, como a la hora de escribir un comando. Sin embargo, en ninguno de los casos está habilitado por defecto. En el caso de Bash, para habilitarlo tienes que añadir,

shopt -s cdspell

Mientras que el caso de Zsh, tendrás que añadir,

setopt correct

En el primero de los casos, lo tienes que añadir en ~/.bashrc y en el segundo en ~/.zshrc, como ya te podías imaginar.

Autocompletado

De nuevo al igual que sucede con los apartados anteriores, ambos, soportan autocompletado, aunque, de nuevo, en el caso de zsh, el automcompletado está mejorado, en el sentido de que es interactivo.

Es decir, si escribes ech y pulsas tab te completará a echo. Sin embargo, además en el caso de zsh te da distintas opciones que puedes seleccionar de forma interactiva.

Frameworks

En el caso de la shell un framework es un marco de trabajo que te da algunas características interesantes como pueden ser automatizaciones, scripts, alias, y temas.

Tanto Bash como Zsh tienen sus propios framworks. En un caso Bash-it y en el otro caso Oh-My-Zsh.

Pero sobre Oh-My-Zsh, no quiero hablar mucho mas ahora, porque estoy implementando mi propio plugin, y quiero ver hasta donde llegar.

Conclusiones

Realmente, no veo muchas diferencias entre una shell y la otra. Sinceramente, creo que el autocompletado interactivo no es suficiente para decantarse por una o por otra. Y por otro lado, pienso , que Bash-it no es tan conocida como Oh-My-Zsh, por razones obvias. Al final, hay mas usuarios de MacOS, no hay que olvidarlo.

Y de nuevo, esto me lleva a la pregunta de ¿porque me cambio yo? Realmente, porque quiero probarlo, quiero ver sus posibilidades, y hasta donde soy capaz de llegar. Quiero conocerlo en profundidad. Quiero ver si además de por cuestiones de licencia hay mas detrás del cambio de MacOS de Bash a Zsh.

Pero si, por el autocompletado interactivo…


Mas información,

Imagen de portada de Giulia May

La entrada Me cambio de shell, de Bash a Zsh aparece primero en Atareao.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.