15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
02.09.2025

Cómo ejecutar un archivo .sh en Linux: Guía completa para principiantes y administradores de sistemas

Los scripts de shell son la columna vertebral de la automatización en Linux. Ya sea que estés desplegando una aplicación web, programando copias de seguridad o configurando un servidor recién aprovisionado, los archivos .sh te permiten agrupar secuencias de comandos complejas en un único ejecutable repetible. Esta guía te lleva a través de cada método para ejecutar scripts de shell en Linux — desde la ejecución básica hasta procesos en segundo plano y programación con cron — con mejores prácticas que funcionan en entornos de producción.

¿Qué es un archivo .sh en Linux?

Un archivo .sh es un script de texto plano escrito en lenguaje shell (típicamente Bash o POSIX sh) que el shell de Linux interpreta y ejecuta línea por línea. Los scripts de shell se utilizan para:

  • Automatizar tareas repetitivas de administración del sistema
  • Desplegar y configurar aplicaciones
  • Gestionar usuarios, permisos y sistemas de archivos
  • Programar trabajos de mantenimiento como copias de seguridad y rotación de registros
  • Inicializar nuevos servidores después del aprovisionamiento

Si estás gestionando un entorno de VPS Hosting o un Servidor Dedicado, el scripting de shell es una habilidad indispensable que te ahorrará horas de trabajo manual cada semana.

Requisitos previos

Antes de ejecutar cualquier archivo .sh, asegúrate de tener:

  • Acceso a una terminal Linux (local o a través de SSH)
  • Una cuenta de usuario con permisos apropiados
  • El archivo de script ya en el sistema (creado localmente o transferido a través de SCP/SFTP)

Método 1: Hacer el archivo ejecutable con chmod

Por defecto, los archivos .sh recién creados o descargados no tienen permisos de ejecución. Antes de ejecutar el script como un programa, debes otorgar explícitamente derechos de ejecución usando el comando chmod.

chmod +x script.sh

Para verificar que los permisos se aplicaron correctamente:

ls -l script.sh

Deberías ver una salida similar a:

-rwxr-xr-x 1 user user 1024 Jun 10 14:32 script.sh

Los indicadores x confirman que el archivo ahora es ejecutable por el propietario, grupo y otros.

> Consejo de seguridad: Si deseas restringir la ejecución solo al propietario del archivo, usa chmod 700 script.sh en lugar de chmod +x.

Método 2: Ejecutar el script usando una ruta relativa o absoluta

Una vez que el archivo es ejecutable, puedes ejecutarlo directamente desde la terminal.

Usando una ruta relativa (directorio actual)

Si el script está en tu directorio de trabajo actual, antepón ./:

./script.sh

El ./ le dice al shell que busque en el directorio actual en lugar de buscar en el $PATH del sistema.

Usando una ruta absoluta

Si el script se almacena en otra ubicación, proporciona su ruta completa:

/home/user/scripts/script.sh

o

/usr/local/bin/script.sh

Usar rutas absolutas es especialmente importante cuando se ejecutan scripts desde trabajos de cron u otros contextos automatizados donde el directorio de trabajo puede diferir.

Método 3: Ejecutar el script con bash o sh (sin permiso de ejecución requerido)

Puedes invocar un script de shell llamando explícitamente al intérprete, incluso si el archivo carece de permisos de ejecución. Esto es particularmente útil para probar rápidamente un script antes de hacerlo permanentemente ejecutable.

bash script.sh

o, para scripts compatibles con POSIX:

sh script.sh

Diferencia entre bash y sh

ComandoIntérpreteSoporta características específicas de Bash
bash script.shGNU Bash
sh script.shPOSIX sh (a menudo dash en Ubuntu)No

Si tu script utiliza sintaxis específica de Bash como arrays, condicionales [[ ]] o sustitución de procesos, siempre usa bash en lugar de sh.

Método 4: Ejecutar el script como superusuario (sudo)

Algunos scripts requieren privilegios de nivel raíz para modificar archivos del sistema, gestionar servicios, instalar paquetes o cambiar configuraciones de red. Usa sudo para elevar permisos:

sudo ./script.sh

o pasa el script directamente a bash con derechos elevados:

sudo bash script.sh

Consideraciones importantes de seguridad

  • Nunca ejecutes un script como root sin leerlo primero. Un script malicioso o mal escrito con acceso a sudo puede causar daño irreversible al sistema.
  • Prefiere ejecutar scripts con los permisos mínimos requeridos.
  • Si un script solo necesita escribir en un directorio específico, considera ajustar los permisos del directorio en lugar de ejecutar todo el script como root.

Método 5: Ejecutar el script en segundo plano

Por defecto, ejecutar un script en la terminal bloquea tu sesión hasta que se complete el script. Para tareas de larga duración — como transferencias de archivos grandes, migraciones de bases de datos o compilaciones de servidores — querrás enviar el proceso al segundo plano.

Usando el operador &

./script.sh &

El símbolo & bifurca el proceso al segundo plano e inmediatamente devuelve el control a tu terminal. El shell imprime el PID (ID de proceso) del trabajo en segundo plano, que puedes usar para monitorearlo o terminarlo más tarde.

Mantener el script ejecutándose después de cerrar sesión con nohup

Si te desconectas de SSH, los trabajos en segundo plano lanzados con & típicamente se terminarán. Usa nohup para evitar esto:

nohup ./script.sh &

La salida se redirige a nohup.out por defecto. Para especificar un archivo de registro personalizado:

nohup ./script.sh > /var/log/myscript.log 2>&1 &

Monitorear trabajos en segundo plano

jobs          # List background jobs in the current session
ps aux | grep script.sh   # Find the process by name
kill PID      # Terminate a specific background process

Método 6: Programar la ejecución del script con Cron

Para tareas recurrentes — copias de seguridad nocturnas, limpiezas semanales, controles de salud cada hora — el programador cron integrado de Linux es la solución estándar.

Abrir el editor de Crontab

crontab -e

Sintaxis de Cron

* * * * * /path/to/script.sh
│ │ │ │ │
│ │ │ │ └── Day of week (0–7, Sunday = 0 or 7)
│ │ │ └──── Month (1–12)
│ │ └────── Day of month (1–31)
│ └──────── Hour (0–23)
└────────── Minute (0–59)

Ejemplos prácticos de Cron

ProgramaciónExpresión de CronCaso de uso de ejemplo
Cada día a las 2:00 AM0 2 * * *Copia de seguridad nocturna de base de datos
Cada lunes a las 6:00 AM0 6 * * 1Rotación de registros semanal
Cada hora0 * * * *Verificación de monitoreo de tiempo de actividad
Cada 15 minutos*/15 * * * *Actualización de caché
Al reiniciar el sistema@rebootIniciar un servicio o script al arrancar

Ejemplo: Copia de seguridad diaria automatizada

0 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1

Esto ejecuta backup.sh cada día a las 2:00 AM y añade tanto la salida estándar como los errores a un archivo de registro para auditoría.

> Consejo profesional: Siempre usa rutas absolutas en entradas de cron. Cron se ejecuta con un entorno mínimo y puede no tener acceso al mismo $PATH que tu shell interactivo.

Método 7: Obtener un script (ejecutar en el contexto del shell actual)

Hay un método de ejecución más que vale la pena conocer: obtener un script. A diferencia de los métodos anteriores, obtener un script lo ejecuta dentro de la sesión del shell actual en lugar de generar un subshell. Esto significa que cualquier variable o función definida en el script persiste en tu entorno actual.

source script.sh

o equivalentemente:

. script.sh

Esto se usa comúnmente para cargar variables de entorno, activar entornos virtuales o aplicar cambios de configuración a la sesión actual.

Solución de problemas de errores comunes

Mensaje de errorCausa probableSolución
Permission deniedEl archivo carece de permiso de ejecuciónEjecuta chmod +x script.sh
No such file or directoryRuta incorrecta o archivo faltanteVerifica la ruta con ls y pwd
bad interpreter: No such file or directoryLínea shebang incorrecta (p. ej., finales de línea de Windows)Ejecuta dos2unix script.sh para corregir finales de línea
command not foundScript no en $PATH y sin prefijo ./Usa ./script.sh o ruta absoluta completa
syntax error near unexpected tokenScript escrito para bash pero ejecutado con shUsa bash script.sh explícitamente

Mejores prácticas para escribir y ejecutar scripts de shell

Seguir estas prácticas hará que tus scripts sean más seguros, más mantenibles y más fáciles de depurar — especialmente en entornos de servidor.

1. Siempre comienza con una línea Shebang

La primera línea de cada script debe declarar el intérprete:

#!/bin/bash

o para máxima portabilidad:

#!/usr/bin/env bash

2. Habilitar modo estricto

Añade esto cerca de la parte superior de cada script de producción:

set -euo pipefail
  • -e — Salir inmediatamente si algún comando falla
  • -u — Tratar variables no establecidas como errores
  • -o pipefail — Capturar fallos en comandos canalizados

3. Lee el script antes de ejecutarlo

Nunca ejecutes un archivo .sh de una fuente externa o no confiable sin revisar su contenido primero:

cat script.sh

o ábrelo en un editor de texto. Esto es especialmente crítico cuando se ejecuta con sudo.

4. Usar comentarios abundantemente

#!/bin/bash
# backup.sh — Daily backup script for /var/www
# Author: sysadmin@example.com
# Last updated: 2024-06-10

# Define source and destination directories
SOURCE="/var/www"
DEST="/mnt/backup"

5. Organizar scripts en directorios dedicados

DirectorioUso recomendado
/usr/local/bin/Scripts de todo el sistema accesibles a todos los usuarios
~/scripts/ o ~/bin/Scripts de usuario personal
/opt/scripts/Scripts de automatización específicos de la aplicación
/etc/cron.daily/Scripts para ejecutar diariamente a través de cron

6. Registrar la salida del script

Siempre redirige la salida a un archivo de registro para scripts que se ejecutan sin supervisión:

./script.sh >> /var/log/script.log 2>&1

7. Probar scripts en un entorno seguro primero

Antes de desplegar un script en un servidor de producción, pruébalo en un entorno de ensayo o en una instancia de VPS desechable donde los errores no causen tiempo de inactividad.

Ejecutar scripts de shell en un servidor Linux: consideraciones prácticas

Cuando ejecutas scripts en un servidor Linux remoto — ya sea en un entorno compartido o en una máquina dedicada — entran en juego algunos factores adicionales:

  • Acceso SSH: La mayoría de los scripts del lado del servidor se ejecutan a través de SSH. Herramientas como screen o tmux te permiten mantener sesiones persistentes para que los scripts de larga duración sobrevivan a desconexiones.
  • Permisos de usuario: En entornos de alojamiento compartido, tu capacidad para ejecutar scripts puede ser limitada. Un VPS con cPanel te da acceso root completo y control total sobre la ejecución de scripts.
  • Despliegues automatizados: Combina scripts de shell con trabajos de cron para automatizar despliegues, renovaciones de certificados (especialmente útil junto con Certificados SSL) y tareas de mantenimiento rutinarias.
  • Variables de entorno: Los scripts que se ejecutan a través de cron o SSH pueden no heredar el entorno de tu shell interactivo. Define todas las variables necesarias explícitamente dentro del script u obtén un archivo de perfil.

Referencia rápida: todos los métodos de un vistazo

15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar