¡Adiós Bash, hola Zsh!
He decidido migrar todos mis sistemas Linux de la fiable y conocida bash
a la poderosa y versátil zsh
. Se trata de una evolución extendida de la Bourne Shell (sh), no solo hereda muchas de las características familiares de Bash, sino que también introduce una serie de nuevas funcionalidades y ofrece un sólido soporte para plugins y temas personalizados. Apple adoptó Zsh como la shell predeterminada hace algún tiempo, me faltaba dar el paso en mis sistemas Linux.
¿Por qué Zsh?
Antes de sumergirnos en la instalación y configuración de Zsh, es esencial comprender las razones detrás de esta elección. Zsh, abreviatura de “Z Shell”, es una potente shell de Unix que ofrece numerosas mejoras y funcionalidades sobre Bash, la shell predeterminada en muchos sistemas Unix.
Ventajas de Zsh sobre Bash
-
Autocompletado Avanzado: Zsh brinda un autocompletado inteligente y avanzado que supera con creces las capacidades de Bash. Desde la sugerencia de nombres de archivos hasta completar comandos y argumentos, la experiencia de navegación en la línea de comandos se vuelve más fluida y eficiente.
-
Personalización Extensiva: Zsh permite una personalización profunda y flexible de la interfaz de usuario. Los usuarios pueden elegir entre una amplia gama de temas predefinidos o crear sus propios diseños para adaptar la apariencia de la línea de comandos a sus preferencias individuales.
-
Potentes Extensiones y Plugins: La comunidad de Zsh ofrece una gran cantidad de extensiones y plugins que amplían aún más su funcionalidad. Desde la integración con herramientas de desarrollo hasta la gestión avanzada de historiales de comandos, estas extensiones permiten a los usuarios personalizar su entorno de trabajo de acuerdo con sus necesidades específicas.
-
Historial Mejorado: Zsh proporciona un historial de comandos mejorado que facilita la búsqueda, edición y ejecución de comandos anteriores. Esta característica resulta especialmente útil para usuarios que trabajan con una gran cantidad de comandos en su día a día.
Instalación
Linux (Ubuntu)
En sistemas Linux basados en Debian, como Ubuntu, la instalación de Zsh es sencilla. Puedes comprobar si ya está instalado y en su defecto instalar Zsh:
⚡ luis@luix:~ $ sudo dpkg -l zsh
:
⚡ luis@luix:~ $ apt install zsh
Compruebo que es una shell válida:
⚡ luis@luix:~ $ grep zsh /etc/shells`
/bin/zsh
/usr/bin/zsh
Cambio a Zsh, para luis
y root
con chsh -s $(which zsh)
⚡ luis@luix:~ $ chsh -s $(which zsh)
Contraseña:
⚡ luis@luix:~ $
⚡ luis@luix:~ $ sudo su -
Contraseña:
root@luix:~# chsh -s $(which zsh)
root@luix:~#
Salgo y vuelvo a entrar en ambos usuarios y verifico que se ejecuta zsh.
⚡ luis@luix:~ $ ps
PID TTY TIME CMD
48727 pts/0 00:00:00 zsh <=== !!
48736 pts/0 00:00:00 ps
Si no tienes el fichero .zshrc
probalemente se ejecutará zsh-newuser-install
y te ofrecerá crearlo. En mi caso seleccioné la opción (2) Populate your ~/.zshrc with the configuration recommended.
Por si te es útil, he dejado varios ficheros en este repositorio zsh-zshrc en GitHub:
- ~/.zshrc. Mi fichero de configuración de
zsh
- ~/.tmux.conf. Mi fichero de configuración de
tmux
. Lo uso en combinación conzsh
, echa un ojo a “Terminales con tmux”. Lo acompaña un script que he llamado t y que ejecutatmux
. - ~/.zsh.async. En el repositorio verás este archivo. Es una copia de un script (zsh) hecho por Mathias Fredriksson que permite ejecutar jobs asíncronos. Descargo mi propia copia desde mi
.zshrc
la primera vez.
Extra: starship
startship.rs se anuncia como “un Prompt para cualquier Shell, mínimo, super-rápido, y altamente personalizable”. Aprovecha símbolos y caracteres especiales que no están presentes en las fuentes predeterminadas, así que tenemos que una Nerd Font.
- Desde el repo de Nerd Fonts >
Downloads
. Busco y descargoFira Code
(puede ser cualquiera).
sudo apt install fontconfig unzip
mkdir -p ~/.fonts
cd .fonts
curl -LJs -o FiraCode.zip https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/FiraCode.zip
unzip FiraCode.zip && rm FiraCode.zip
fc-cache -fv
- Lo configuro como fuente por defecto en Gnome Console “PDTE”
- Instalo la última versión con:
curl -sS https://starship.rs/install.sh | sh
- Configuro mi
.zshrc
(sección anterior)
macOS
Los usuarios de macOS ya tienen Zsh instalado por defecto, lo que significa que pueden empezar a utilizarlo de inmediato sin necesidad de instalación adicional. Pueden abrir Terminal y comenzar a experimentar con las características y funcionalidades de Zsh.
Extra: starship en MacOS
startship.rs se anuncia como “un Prompt para cualquier Shell, mínimo, super-rápido, y altamente personalizable”. Aprovecha símbolos y caracteres especiales que no están presentes en las fuentes predeterminadas, así que tenemos que una Nerd Font.
- Desde el repo de Nerd Fonts >
Downloads
. Busco y descargoFira Code
(puede ser cualquiera). Unzip del fichero, selecciono todos los.ttf
> botón derecho >Abrir
> Instalar todos. - Lo configuro como fuente por defecto en iTerm: Settings -> Profiles -> Default -> Text -> Font
FiraCode Nerd Font
- Instalo la última versión con:
brew update && brew upgrade && brew install starship
- Configuro mi
.zshrc
Windows 11
Para los usuarios de Windows 11 que deseen utilizar Zsh, te recomiendo instalar el Subsistema de Windows para Linux (WSL2) y una distribución de Linux compatible.
La shell que viene por defecto en Ubuntu para WSL2 es bash pero la puedes cambiar exactamente igual que como lo haces en Linux y tambien te puedes instalar “tmux”, hablo sobre ello en este artículo sobre Windows para desarrollo.
Referencias
Cheatsheet
En la recomendadísima Ultimate Resource List encontrarás una estupenda Cheatsheet. Resalto las entradas relacionadas con zsh
:
- Shells
- ✅ Zsh - es un shell diseñado para uso interactivo, aunque también es un poderoso lenguaje de scripting.
- ✅ Oh My ZSH! - es el mejor marco de trabajo para gestionar tu configuración de Zsh. Echa un ojo a su sitio, oh-my-zsh viene con miles de funciones útiles, ayudantes, plugins, temas. Trae varios plugins que hacen la vida más fácil. Lo mejor de Oh My Zsh son sus temas.
- Plugins para shell
- ✅ zsh-autosuggestions - Autosugestiones al estilo de Fish para Zsh.
- ✅ zsh-syntax-highlighting - Resaltado de sintaxis al estilo del shell Fish para Zsh.
- ✅ Awesome ZSH Plugins - Una lista de marcos de trabajo, plugins, temas y tutoriales para ZSH.
- Gestores
- ✅ tmux - es un multiplexor de terminales, permite cambiar fácilmente entre varios programas en un mismo terminal.
Al hacer la transición de Bash a Zsh, no solo estás adoptando una herramienta más poderosa y versátil, sino que también estás abriendo las puertas a una experiencia en la línea de comandos más eficiente y adaptable. Con sus características avanzadas y su activa comunidad de desarrolladores, Zsh se posiciona como la opción ideal para usuarios que buscan maximizar su productividad y control en entornos estilo unix.