Ir al contenido
angel.library

bash y zsh: shells tipo Linux

Ambos son shells — el programa que interpreta lo que se tipea en la terminal. zsh es más nuevo, con mejor autocompletado y más opciones de personalización (frameworks como Oh My Zsh son solo para zsh); bash es el más extendido históricamente y el default de la mayoría de distros Linux. macOS usa zsh como shell default desde Catalina (2019); antes usaba bash.

Ver el shell actual:

Ventana de terminal
echo $SHELL

Cada shell corre distintos archivos según cómo se abrió la sesión:

ArchivoShellCuándo se ejecuta
~/.bashrcbashCada terminal nueva interactiva (no de login)
~/.bash_profilebashSolo en shells de “login” (ej. al conectarse por SSH)
~/.zshrczshCada terminal nueva interactiva
~/.zprofilezshSolo en shells de “login”

En la práctica, la mayoría de terminales gráficas (VS Code, iTerm, GNOME Terminal) abren shells interactivos no-login, así que .bashrc/.zshrc es donde va casi todo: alias, PATH, variables de entorno, prompts. .bash_profile/.zprofile suele limitarse a cargar el otro archivo:

.bash_profile
[ -f ~/.bashrc ] && source ~/.bashrc
DistroGestorInstalarActualizar índiceActualizar paquetesQuitar
Debian / Ubuntuaptsudo apt install <paquete>sudo apt updatesudo apt upgradesudo apt remove <paquete>
Fedora / RHELdnfsudo dnf install <paquete>(implícito en install)sudo dnf upgradesudo dnf remove <paquete>
Archpacmansudo pacman -S <paquete>sudo pacman -Sysudo pacman -Syusudo pacman -R <paquete>
Ventana de terminal
sudo apt update && sudo apt upgrade

Primero refresca el índice de paquetes disponibles (update), después instala las versiones más nuevas de lo ya instalado (upgrade). Encadenar los dos con && es el flujo estándar en Debian/Ubuntu — correr solo upgrade sin update antes deja actualizar contra un índice viejo.

  • apt distingue update (refrescar índice) de upgrade (aplicar actualizaciones) — son pasos separados a propósito. dnf y pacman no separan tanto ese paso.
  • Cambiar de shell default (chsh -s $(which zsh)) no borra la configuración de bash — ambos archivos pueden coexistir, cada shell lee solo los suyos.
  • Estos gestores administran software del sistema operativo — no reemplazan a npm/pnpm/bun para dependencias de un proyecto Node.