Cambiar el shell a zsh con Oh-My-Zsh

Vamos a ver como cambiar el interprete de comandos o shell y añadir alguna configuración para personalizarlo. En concreto instalaremos zsh y Oh-My-Zsh.

El interprete de comandos o shell es un programa que lee comandos escritos por el usuario y los ejecuta. Además el interprete proporciona tareas de control de trabajos y disponen de un lenguaje de programación para realizar scripts. Existen diferentes interpretes, como bash, csh, zsh, fish, etc., con diferentes características.

Por ejemplo bash, uno de los shell más extendidos, ofrece compleción de nombres de archivos y comandos, funciones avanzadas de scripting, historial de comandos, colores configurables, alias de comandos, entre otras funciones.

Par ver el shell que tenemos por defecto ejecutamos echo $SHELL:

$ echo $SHELL
/bin/bash

Este es el que trae por defecto Ubuntu, y uno de los más usados en todas las distribuciones. En general casi todos los interpretes están basados en Bourne Shell (bash) y funcionan de manera similar, entre ellos el que vamos a instalar zshZsh es compatible con bash, pero incluye más funciones. El shell zsh ofrece:

  • Corrección ortográfica incorporada
  • Finalización mejorada de la línea de comandos
  • Módulos cargables que actúan como complementos para el shell
  • Alias globales que le permiten alias a nombres de archivos o cualquier otra cosa en la línea de comandos en lugar de solo comandos
  • Configuración avanzada de temas

Podríamos decir que es similar a bash, pero con muchos extras, funciones adicionales y opciones configurables que nos pueden resultar muy útiles si pasamos mucho tiempo en la línea de comandos.

Instalar zsh

Instalar zsh es muy sencillo desde los repositorios:

$ sudo apt install zsh

Para poner zsh como nuestro shell predeterminado ejecutamos:

$ chsh -s $(which zsh)

Cerramos y volvemos a iniciar el terminal y nos saldrá la pantalla de configuración inicial del shell zsh:

This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q)  Quit and do nothing.  The function will be run again next time.

(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.

(2)  Populate your ~/.zshrc with the configuration recommended
     by the system administrator and exit (you will need to edit
     the file by hand, if so desired).

--- Type one of the keys in parentheses ---

Elegimos la opción 2 y nos crea una configuración predeterminada en el fichero .zshrc.

Emuladores de terminal

Antes de instalar y configurar Oh-My-Zsh vamos a ver algo sobre los emuladores de terminal. El emulador de terminal es el programa que lanzamos en nuestro escritorio para acceder al shell. Por defecto GNOME trae gnome-terminal, pero existen muchos otros. El que más uso es terminator, un gestor que nos permite:

  • Organizar terminales en una estructura similar a una cuadrícula
  • Organizar los terminales en Pestañas
  • Arrastrar y soltar para reordenar los terminales
  • Añadir muchos atajos de teclado
  • Guardar múltiples diseños y perfiles a través del editor de preferencias de GUI
  • Mecanografía simultánea a grupos arbitrarios de terminales
  • Extender a través de complementos

terminator

Para instalar este emulador:

$ sudo apt install terminator

Otro emulador interesante que uso es guake. Este es un emulador anclado desplegable, que se hace visible en un lugar de la pantalla con la pulsación de una tecla (por defecto F12). Es muy útil para abrir rápidamente un terminal en cualquier momento.

Para instalar guake

$ sudo apt install guake

En los dos emuladores configuro los atajos de teclado iguales para dividir ventanas, cambiar entre ventanas, etc. de esta forma se hace muy intuitivo trabajar con ambos

Vamos a continuar con la configuración de nuestro shell, ahora toca instalar y configurar Oh-My-Zsh.

Instalar Oh-My-Zsh

Oh-My-Zsh es un framework para manejar la configuración de zsh. Para instalarlo corremos un script que descargamos directamente de su cuenta de github:

$ sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

Instalación de ohmyzsh

Instalamos ahora Powerlevel10k que es un tema para zsh:

$ git clone --depth=1 https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k

Con esto descargamos directamente el tema en la carpeta de temas de Oh-My-Zsh.

Powerlevel10k utiliza una serie de caracteres especiales para hacer más vistosa la presentación del shell, esto hace que no todas las fuentes sean adecuadas para su uso. En la web de Powerlevel10k recomiendan el uso de Meslo Nerd Font patched for Powerlevel10k que podemos descargar de su mismo github:

$ wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf
$ wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf
$ wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf
$ wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf

Personalmente utilizo las fuentes JetBrainsMono, diseñadas por JetBrains para desarrolladores, que también da un buen resultado con el tema Powerlevel10k:

$ wget https://download.jetbrains.com/fonts/JetBrainsMono-2.001.zip

Tenemos que instalar las fuentes, bien ejecutándolas desde nautilus y seleccionando instalar:

Instalar Fuentes

O copiandolas directamente a /usr/local/share/fonts si queremos instalarlas para todo el sistema, o en ~/.local/share/fonts para un usuario concreto. Si copiamos las fuentes debemos ejecutar fc-cache -f -v para reconstruir manualmente el cache de las fuentes.

Ahora tenemos que configurar nuestros emuladores de terminal para que utilicen esta fuente, por ejemplo en terminator:

Fuente en terminator

Y en  guake:

Fuente en guake

Ahora vamos a editar la configuración de zsh para indicarle que utilice el tema Powerlevel10k:

$ vim $HOME/.zshrc

y cambiamos el tema:

# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
#ZSH_THEME="robbyrussell"
ZSH_THEME="powerlevel10k/powerlevel10k"

Grabamos y recargamos la configuración:

$ source ~/.zshrc

Esto inicializará un wizard con una serie de preguntas para configurar el entorno y comprobar que se visualizan bien los caracteres con nuestra configuración:

Wizard de Powerlevel10k

Cuando finalizamos el wizard tendremos configurado nuestro shell zsh.

Si queremos lanzar nuevamente el wizard ejecutamos:

$ p10k configure

Ya tenemos listo nuestro shell, algo más vistoso y con nueva funcionalidad. A partir de aquí podemos añadir algunos complementos, teniendo en cuenta no excederse demasiado ya que ralentizaran el inicio del shell.

Modificado por última vez enMartes, 18 Agosto 2020 15:27
(1 Voto)
Etiquetado como :

Deja un comentario

Asegúrese de introducir toda la información requerida, indicada por un asterisco (*). No se permite código HTML.