Tres piezas distintas
- Terminal: la ventana donde se escribe (Windows Terminal, iTerm, GNOME Terminal).
- Shell: el programa que interpreta los comandos (bash, zsh).
- Kernel: quien realmente ejecuta lo que la shell le pide.
echo $SHELL # la shell por defecto del usuario
echo $0 # la shell que está en uso ahora
ps -p $$ # lo mismo, vía el proceso actual
cat /etc/shells # shells instaladas y permitidas
ls -l /bin/sh # en Ubuntu apunta a dash, no a bash
Tipos de shell
| Shell | Notas |
|---|---|
sh |
El estándar POSIX original. Mínimo y portable. |
dash |
Muy rápida, solo POSIX. Es /bin/sh en Ubuntu y Debian. |
bash |
La más extendida. Es la que viene por defecto en la mayoría de distros. |
zsh |
Más personalizable. Es la shell por defecto en macOS. |
fish |
Amigable, con autocompletado inteligente. No es compatible con bash. |
Importa porque un script con #!/bin/sh que use sintaxis exclusiva de bash (los bashismos, como [[ ]] o los arreglos) puede fallar en Ubuntu, donde sh es dash.
Archivos de configuración de bash
| Archivo | Cuándo se lee |
|---|---|
~/.bashrc |
En cada terminal interactiva nueva. Aquí van los alias y el PATH. |
~/.profile |
Al iniciar sesión (login). |
~/.bash_history |
Guarda el historial de comandos. |
alias ll='ls -lah' # alias temporal, solo en esta sesión
echo "alias ll='ls -lah'" >> ~/.bashrc # permanente
source ~/.bashrc # recarga la configuración sin cerrar la terminal
Primer arranque de una distro
Al abrir una distro recién instalada conviene actualizarla y comprobar lo básico:
sudo apt update && sudo apt upgrade -y
whoami # el usuario actual
pwd # carpeta actual (debería ser /home/usuario)
cat /etc/os-release # qué distro y versión es
Al escribir la contraseña de sudo no se muestra nada, ni asteriscos. Es normal.
En WSL conviene trabajar dentro del sistema de archivos de Linux (~ o /home/usuario) y no en /mnt/c/.... Es mucho más rápido y evita problemas de permisos.