Pasando de bash a zsh

Hace tiempo oí hablar de zsh, un shell bastante potente que tenía peculiaridades que lo hacían, a priori, mejor o, al menos, más completo que el archiconocido bash.

Por cuestiones de tiempo no lo pude probar en su momento, pero no hace mucho me decidí a instalarlo y echarle un vistazo.

Realmente, una vez instalado, zsh (o Z shell) es muy parecido al bash, por lo que si el uso que le dais al terminal es ocasional no vais a notar mucha diferencia en primera instancia. De hecho, en estos casos casi que os recomiendo que ni lo instaléis, porque bash funciona perfectamente y las bondades de zsh son útiles para uno uso más intensivo.

La única excepción que veo a esto es que, aunque no uséis mucho la terminal, queráis darle un aspecto más chulo (más colorido, mostrando más datos, más personalizado), ya que estos menesteres con zsh no son complicados y los resultados son bastante decentes.

Si le dais más uso sí que le sacaréis mayor provecho ya que muchas de las funcionalidades que zsh incorpora y de las que bash carece (*).

Hay un documento (una presentación web) de visita obligada si queréis ver qué puede hacer zsh y que otros shells no puede, y es ésta. En ella se muestran cosas que puedes hacer en zsh y que, por ejemplo, en bash no se puede.

En ella muestran ejemplos prácticos de por qué os puede resultar muy útil sustituir vuestro intérprete de comandos actual por zsh. Os comento algunas interesantes:

  • El tabulador que se usa para completar un comando, si lo usáis tras introducirlo, os va a completar con los parámetros del comando. Por ejemplo, si ponéis zypper in y le dais al tabulador, os va a mostrar los distintos parámetros de zypper que comienzan con las letras in, como pueden ser info o install, por ejemplo.
  • Si accedéis a una ruta de directorios muy profunda, como por ejemplo:
/home/amms/un/directorio/cualquiera/pero/profundo

y queremos ir al directorio:

/home/amms/otro/directorio/cualquiera/pero/profundo

no hace falta que reescribamos la ruta completa, sino que podemos poner esto:

cd un otro

y lo que hará será sustituir en la ruta actual el directorio un por otro, ahorrándonos mucho tiempo y la molestia de tener que reescribirla por completo.

  • Existe la posibilidad de poner una cadena como prompt derecho. Podemos usar distintos parámetros para personalizarlo (también el izquierdo), pudiendo ser éstos la fecha, la hora, la ruta, el usuario, usar colores, etc.
  • Se pueden usar lo que se denominan alias globales. Ejemplo:
alias -g p='ps -ef | grep'

que es muy útil, al menos para mí.

Para instalarlo podéis usar el gestor de paquetes de vuestra distro, porque está en todas las distros conocidas (si no lo está, cambiad de distro, ¡ya!). Una vez instalado tenéis que especificar que queréis que éste sea vuestro shell por defecto. Para ello, ejecutáis como root:

chsh -s `which zsh` $USER

Si os animáis a instalarlo y tenéis alguna pega me podéis poner un comentario y lo vemos.

En otro artículo os hablaré de cómo personalizar fácilmente zsh (sí, me refiero a  usar cosas como oh-my-zsh o antigen).

 

 

(*) Realmente hay algunas cosas que sí que se pueden implementar en bash con funciones pero es un poco más rudimentario que zsh en general para aspectos de personalización y de funcionalidad práctica en general.

6 pensamientos en “Pasando de bash a zsh

  1. woot

    Hola. primero que todo me gustó tu post. por ello quiero hacerte una consulta. desde hace tiempo uso zsh. pero ahora perdí todas las funcionalidades estando como root. por ejemplo no recuerda el historial de comandos. no auto-completa los comando que voy escribiendo ni nada de nada. las teclas de inicio, fin, insert, supr, no funcionan adecuadamente solo me muestran este caracter “~” se me hace incomodo usar zsh de esa forma, todo eso me sucede unicamente con el user root. Saludos

    1. admin Autor

      Hola.

      La configuración de zsh es dependiente del usuario que uses. Por tanto, cada usuario debe configurarlo a su medida. Mi opinión es que si te gusta cómo te ha quedado para tu usuario normal, que copies los archivos de configuración tal cuál como root y los dejes en el home de root (que normalmente será /root). Pruébalo y me comentas.

      Gracias por el comentario.

      Salu2, Mario.

      1. woot

        Hola, gracias por responder. ya todo eso lo intenté sin éxito. de los años que llevo usando zsh con oh-my-zsh nunca me había pasado esto. no se si mi usuario debe estar en un grupo especifico, de lo que si estoy seguro es que nada tiene que ver la distribución de mi teclado.

        1. admin Autor

          Es muy raro, si la configuración de los ficheros es correcta debería funcionar. Otra cosa que puedes mirar (aunque supongo que la habrás tenido en cuenta ya) es que mires que el shell por defecto de root es zsh y no otro (sh, bash, etc.).

          En última instancia, puedes -previo backup si es necesario- borrar los ficheros de configuración relacionados con zsh en /root y volver a empezar, a ver si te funciona así. Prueba a usar antigen, por ejemplo (también puedes usar oh-my-zsh, aunque antigen es más sencillo a la larga en mi opinión) para configurarlo y prueba.

          Suerte!

          Salu2, Mario.

  2. Arkus

    yo tengo un problema espero puedas ayudarme, en mi usario normal tengo bien instalado zsh con temas pero al darle sudo su, me sale un error el vuelve a su configuracion normal, ese es el mensaje de error

    /root/.oh-my-zsh/oh-my-zsh.sh:source:110: no existe el fichero o el directorio: /root/.oh-my-zsh/themes/avit.zsh.zsh-theme

    1. admin Autor

      Hola.

      El error que te da es porque intenta ejecutar (evaluar) el fichero en cuestión y no lo encuentra. Para saber un poco más sobre oh-my-zsh te recomiendo que leas mi entrada: http://antonio-mario.com/tag/oh-my-zsh/.

      De todas formas, yo uso antigen en su lugar. Te recomiendo que leas esto: http://antonio-mario.com/personalizando-zsh-antigen/. Antigen es un gestor de plugins que te facilitará mucho el trabajo y la personalización de zsh.

      Gracias por tu visita y por tu comentario.

      Salu2, Mario.

Los comentarios están cerrados.