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

  1. El usuario escribe un comando en la terminal.
  2. La terminal envía el comando a la shell.
  3. La shell interpreta el comando y solicita al kernel su ejecución.
  4. El kernel ejecuta el comando.
  5. 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:

  1. Dar permisos de ejecución:
chmod +x nombre_del_script.sh
  1. 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.sh si 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.