Conceptos de Shell, Shebang y Bash en Linux

El Shell es un intérprete de comandos que actúa como intermediario entre el usuario y el sistema operativo. Su función principal es leer las órdenes ingresadas por el usuario y traducirlas para que el núcleo (kernel) del sistema las ejecute.

Cuando un usuario escribe un comando como ls, cat o pwd, este se envía al intérprete de Shell. Luego, el Shell lo convierte en llamadas al sistema que el kernel pueda entender, y finalmente el kernel traduce esas instrucciones a código binario que la máquina procesa.

El programa que implementa el Shell por defecto en la mayoría de las distribuciones Linux se llama Bash (Bourne Again SHell). Existen otros intérpretes como sh, zsh, fish, etc.

Los comandos del sistema, como ls, son binarios ejecutables que suelen estar en /usr/bin. Por ejemplo:

root@servidor:~# which bash
/usr/bin/bash

En Linux, los archivos en /usr/bin de color verde suelen ser binarios ejecutables. Los colores por defecto (pueden personalizarse mediante la variable $LS_COLORS) son:

  • Blanco: archivos ordinarios
  • Azul: directorios
  • Verde: ejecutables
  • Rojo: comprimidos
  • Cian: enlaces simbólicos
  • Rojo parpadeante: enlace roto
  • Amarillo: archivos de dispositivo
  • Gris: otros

Para automatizar tareas, se pueden escribir secuencias de comandos en archivos de texto, lo que se conoce como script de Shell. Estos archivos contienen comandos de Linux, estructuras de control (if, for, while) y comentarios. La ejecución puede ser interactiva (comando por comando) o no interactiva (mediante un script).

El Shebang es la primera línea de un script que comienza con #! y especifica el intérprete que debe utilizarse. Por ejemplo:

  • #!/bin/bash → usa Bash
  • #!/usr/bin/python3 → usa Python 3
  • #!/usr/bin/env bash → busca Bash en el PATH del usuario

Si no se especifica shebang, el script se ejecuta con el intérprete por defecto del shell actual. Si el intérprete indicado no existe o no tiene permisos de ejecución, se generará un error.

Formas de ejecutar un script:

  1. bash script.sh o sh script.sh (recomendado si no hay permisos de ejecución).
  2. Usar la ruta absoluta o relativa si el archivo tiene permiso x.
  3. source script.sh o . script.sh (ejecuta en el shell actual).
  4. bash < script.sh (redirección de entrada).

El Shell es especialmente útil en tareas de administración de sistemas, procesamiento de archivos de texto y automatización. Se combina frecuentemente con herramientas como grep, sed y awk (conocidas como los tres mosqueteros).

Shell es un lenguaje de tipo débil: las variables no requierne declaración de tipo y todo se trata como cadena por defecto. Por ejemplo:

nombre="Juan"
edad=25

En lenguajes de tipo fuerte como C o Go, es necesario declarar el tipo:

string nombre = "Juan";
int edad = 25;

En CentOS 7, los shells disponibles son (archivo /etc/shells):

/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

En CentOS 7, /bin/sh suele ser un enlace simbólico a bash. En Ubuntu, /bin/sh es enlace a dash (más ligero).

El shell por defecto se puede consultar con echo $SHELL.

Características de Bash

  • Procesa comandos ingresados directamente o desde un script.
  • Soporta comodines (*, ?), tuberías (|), sustitución de comandos ($(comando)) y estructuras de control.
  • Mantiene un historial de comandos (history). Las variables importantes son:
    • $HISTSIZE: número de comandos recordados en memoria.
    • $HISTFILE: archivo donde se guardan los comandos al salir (normalmente ~/.bash_history).

Atajos de teclado útiles en Bash:

  • Ctrl+C – cancelar comando actual.
  • Tab – autocompletar.
  • Ctrl+D – cerrar sesión.
  • Ctrl+A – ir al inicio de la línea.
  • Ctrl+U – borrar desde el inicio hasta el cursor.
  • Ctrl+E – ir al final de la línea.
  • Ctrl+K – borrar desde el cursor hasta el final.

Etiquetas: shell bash Shebang linux scripting

Publicado el 7-8 06:53