Terminal Y Shell
Terminal y Shell
Guía Completa de Terminal y Shell en Linux
Este documento explica de manera organizada el funcionamiento de la terminal, las shells y cómo ejecutar scripts en Linux.
1. Terminal en Linux
La terminal es el programa donde escribes comandos y ves los resultados. Puede ser:
- Gráfica: GNOME Terminal, Konsole, xterm, Alacritty, Kitty, Tilix.
- Física: TTY (Ctrl+Alt+F1…F6), no requiere entorno gráfico.
Función: Actúa como canal de comunicación entre el usuario y la shell.
2. Shell (Intérprete de Comandos)
La shell es el programa que interpreta y ejecuta los comandos escritos en la terminal.
Funciones principales:
- Ejecutar comandos del sistema.
- Variables y sustitución (
$HOME,$PATH). - Redirección de entrada/salida (
>,<,|). - Estructuras de control (
if,for,while). - Alias y funciones definidas por el usuario.
Shells más comunes en Linux:
| Shell | Descripción | Características |
|---|---|---|
| sh | Bourne Shell | Muy básico, compatible en casi cualquier Unix. |
| bash | Bourne Again Shell | Compatible con sh + funciones avanzadas, autocompletado, historial, arreglos. |
| zsh | Z Shell | Interactiva, muy personalizable (Oh My Zsh). |
| csh/tcsh | C Shell | Sintaxis estilo C, más usada en BSD. |
| ksh | Korn Shell | Potente para scripting. |
| fish | Friendly Interactive Shell | Interactiva y fácil de usar. |
| dash | Debian Almquist Shell | Ligera, usada en scripts del sistema. |
Nota: Bash es un superconjunto de sh: todos los comandos sh funcionan en Bash, pero no todos los comandos Bash funcionan en sh.
3. Flujo de ejecución en Linux
- El usuario escribe un comando en la terminal.
- La terminal envía el comando a la shell.
- La shell interpreta el comando y solicita al kernel su ejecución.
- El kernel ejecuta el comando.
- La salida se envía de vuelta a la shell, que la muestra en la terminal.
Diagrama simplificado:
Usuario → Terminal → Shell → Kernel → Shell → Terminal → Usuario
4. Scripts .sh
Los archivos .sh son scripts de shell. La extensión es convencional y no determina la shell a usar.
Ejecución de scripts:
- Dar permisos de ejecución:
chmod +x nombre_del_script.sh
- Ejecutar el script:
- Con ruta relativa:
./nombre_del_script.sh
- Con ruta absoluta:
/home/usuario/scripts/nombre_del_script.sh
- Usando la shell explícitamente (no requiere permisos):
bash nombre_del_script.sh
sh nombre_del_script.sh
Shebang (#!):
- Indica al sistema qué shell usar:
#!/bin/bash
- Permite ejecutar el script con
./script.shsi tiene permisos de ejecución.
Diferencias entre sh y bash en scripts:
- sh: sintaxis básica, compatible universal.
- bash: añade autocompletado, historial, bucles avanzados, arreglos, etc.
Ejemplo:
# sh básico
for i in 1 2 3; do
echo $i
done
# bash avanzado
for i in {1..3}; do
echo $i
done
El segundo ejemplo solo funciona en Bash.
5. Resumen rápido de conceptos
| Concepto | Función |
|---|---|
| Terminal | Programa que recibe y muestra los comandos y resultados. |
| Shell | Interpreta los comandos y gestiona su ejecución con el kernel. |
| Kernel | Núcleo de Linux que ejecuta realmente los comandos y gestiona recursos. |
| .sh | Archivo de script de shell (convencional). |
| Shebang | Línea que indica qué shell usar para ejecutar un script. |