How do I run a sh file in Linux?

Ejecuta Scripts .sh en Linux: La Guía Definitiva

17/09/2008

Valoración: 3.98 (16165 votos)

Los archivos con extensión .sh son el corazón de la automatización en sistemas operativos como Linux. Son conocidos como scripts de shell, y no son más que archivos de texto que contienen una secuencia de comandos destinados a ser ejecutados por la terminal. Aprender a manejarlos es un paso fundamental para cualquier usuario que desee optimizar su flujo de trabajo, automatizar tareas repetitivas y aprovechar todo el poder que Linux tiene para ofrecer. Desde simples operaciones con archivos hasta complejos despliegues de aplicaciones, los scripts de shell son una herramienta indispensable.

How do I open a sh file in Windows 10?
Now, when you double click the file on the desktop, it should execute. no need for . or ./ Right-click the .sh file and make it executable. Open a terminal (Ctrl + Alt + T). Drag the .sh file into the terminal window and watch in awe.

En esta guía completa, te llevaremos de la mano a través de todo el proceso. Exploraremos no solo cómo ejecutar un script, sino también cómo crearlo, cómo gestionar sus permisos y qué hacer cuando las cosas no salen como esperamos. Abordaremos los métodos más comunes y te daremos las claves para que entiendas cuándo es mejor usar uno u otro.

Índice de Contenido

Preparación: Creando y Dando Permisos a tu Script

Antes de poder ejecutar un script, primero necesitamos tener uno. Y lo más importante, debemos asegurarnos de que el sistema operativo nos permita ejecutarlo. Este paso previo es crucial y a menudo es la fuente de los primeros errores para los principiantes.

Creando tu Primer Script .sh

Crear un script de shell es tan sencillo como crear un archivo de texto. Puedes usar cualquier editor de texto que prefieras, como nano, vim o gedit. Para este ejemplo, usaremos nano, que es conocido por su simplicidad.

Abre tu terminal y escribe el siguiente comando para crear y editar un nuevo archivo llamado saludo.sh:

nano saludo.sh

Dentro del editor, escribe las siguientes líneas:

#!/bin/bash echo "¡Hola, Mundo desde mi primer script!"

Analicemos estas dos líneas:

  • #!/bin/bash: Esta línea es fundamental y se conoce como shebang. Le indica al sistema operativo que este archivo debe ser interpretado y ejecutado utilizando el intérprete de Bash, que se encuentra en la ruta /bin/bash. Aunque un script pueda funcionar sin él, es una buena práctica incluirlo siempre para garantizar la portabilidad y el comportamiento esperado.
  • echo "...": Este es un comando simple que imprime el texto que le sigue en la terminal. Es el equivalente al "Hola, Mundo" de la programación de scripts.

Para guardar y salir de nano, presiona Ctrl + O, luego Enter para confirmar el nombre del archivo, y finalmente Ctrl + X para salir del editor.

La Importancia de los Permisos de Ejecución

En Linux, por seguridad, los archivos de texto que creas no tienen permiso de ejecución por defecto. Si intentas ejecutar tu script recién creado, te encontrarás con un error de "Permiso denegado". Debemos decirle explícitamente al sistema que este archivo es un programa que se puede ejecutar.

Para ello, utilizamos el comando chmod (change mode). El comando para añadir el permiso de ejecución es:

chmod +x saludo.sh

Este comando otorga (+) el permiso de ejecución (x) al archivo saludo.sh para el usuario actual, el grupo y otros. Ahora tu script está listo para ser ejecutado.

How do I run a sh file in Linux?
The .sh file is nothing but the shell script to install given application or to perform other tasks under Linux and UNIX like operating systems. The easiest way to run .sh shell script in Linux or UNIX is to type the following commands. Open the terminal (your shell prompt) and type the commands. How do I run .sh file shell script in Linux?

Métodos Fundamentales para Ejecutar un Script .sh

Existen varias formas de ejecutar un script en Linux. Cada una tiene sus particularidades y se adapta mejor a diferentes escenarios. A continuación, exploramos las tres más importantes.

Método 1: Ejecución Directa (./)

Esta es la forma más común y directa de ejecutar un script. Una vez que le has dado permisos de ejecución, simplemente navega hasta el directorio donde se encuentra el archivo y ejecútalo precediendo su nombre con ./.

./saludo.sh

El prefijo ./ es necesario para indicarle al shell que el script que quieres ejecutar se encuentra en el directorio actual (.). Por razones de seguridad, el directorio actual no suele estar en la variable de entorno PATH del sistema, que es la lista de directorios donde el shell busca los ejecutables. Sin el ./, el shell buscaría un comando llamado `saludo.sh` en directorios como /bin o /usr/bin y no lo encontraría.

Método 2: Usando el Intérprete de Bash Explícitamente

Este método consiste en invocar directamente al intérprete (bash) y pasarle el nombre del script como argumento.

bash saludo.sh

La principal ventaja de este método es que no requiere que el archivo tenga permisos de ejecución. Estás diciéndole a bash que lea e interprete los comandos dentro del archivo, en lugar de pedirle al sistema operativo que ejecute el archivo como un programa independiente. Es muy útil para ejecutar scripts que has descargado y de los que no quieres o no puedes modificar los permisos.

Método 3: El Comando `source` (o el punto `.`)

Este método es más avanzado y su diferencia es sutil pero muy importante. Los dos métodos anteriores ejecutan el script en una nueva instancia del shell (un subshell). Esto significa que cualquier cambio que el script realice en su entorno (como la creación de variables o la modificación del directorio actual) se pierde tan pronto como el script termina.

How do I run the script file demo SH?
So, to run the script file demo.sh, execute the following command: This command starts a new "bash" process, which reads the commands in the file and executes them one after the other. After running the command above, you should see Hello World! printed on the terminal:

El comando source, o su atajo, un simple punto (.), ejecuta el script en el contexto del shell actual.

source saludo.sh

O, de forma más breve:

. saludo.sh

Esto significa que cualquier variable de entorno que el script defina o modifique, o si cambia de directorio con cd, esos cambios permanecerán en tu sesión de terminal actual después de que el script haya finalizado. Se usa comúnmente para cargar configuraciones o funciones en la sesión activa.

Tabla Comparativa de Métodos de Ejecución

Para aclarar las diferencias, aquí tienes una tabla que resume los tres métodos:

MétodoComando de Ejemplo¿Requiere Permisos de Ejecución?Contexto de EjecuciónCaso de Uso Ideal
Ejecución Directa./script.shNuevo shell (subshell)Uso general para la mayoría de los scripts.
Intérprete Explícitobash script.shNoNuevo shell (subshell)Cuando no tienes o no quieres dar permisos de ejecución.
Source / Puntosource script.shNoShell actualPara modificar el entorno de la terminal actual (cargar variables, alias, funciones).

Solución de Problemas Comunes

Incluso con los pasos claros, a veces pueden surgir problemas. Estos son los dos errores más comunes al ejecutar scripts y cómo solucionarlos.

Error: "Permiso denegado" (Permission Denied)

Este es, con diferencia, el error más frecuente. Como ya hemos visto, el mensaje de error es bastante claro: el sistema operativo te está impidiendo ejecutar el archivo porque no tiene los permisos adecuados.

Solución: Asegúrate de haber otorgado permisos de ejecución al archivo. La solución casi siempre es ejecutar:

chmod +x nombre_del_script.sh

Error: "Comando no encontrado" (Command Not Found)

Este error aparece cuando intentas ejecutar el script sin el prefijo ./ (ej: saludo.sh en lugar de ./saludo.sh). El shell busca el comando en los directorios definidos en la variable de entorno PATH, y como el directorio actual no suele estar incluido, no lo encuentra.

Solución: Asegúrate de estar en el directorio correcto donde se encuentra el script y utiliza siempre el prefijo ./ para referirte a un archivo en la ubicación actual. Si quieres poder ejecutar tu script desde cualquier lugar, puedes moverlo a un directorio que esté en el PATH, como /usr/local/bin.

Do shell scripts have a SH extension?
Shell scripts typically have a `.sh` extension, although this is not mandatory. The most critical aspect of running a shell script is ensuring that it has the correct permissions. In Unix-like systems, file permissions determine who can read, write, or execute the script.

Preguntas Frecuentes (FAQ)

P: ¿Es obligatorio que los scripts de shell tengan la extensión .sh?

R: No, no es obligatorio. En Linux, las extensiones de archivo son más una convención para los humanos que un requisito para el sistema. Puedes nombrar tu script como quieras (por ejemplo, `mi-script`) y, siempre que tenga el shebang correcto y permisos de ejecución, funcionará. Sin embargo, usar .sh es una buena práctica porque hace que el propósito del archivo sea inmediatamente obvio.

P: ¿Qué es exactamente el `#!/bin/bash` al inicio del archivo?

R: Es el "shebang". Es una directiva especial que le dice al sistema operativo qué intérprete debe usar para ejecutar los comandos del archivo. Puedes apuntar a otros intérpretes también, como #!/usr/bin/python3 para un script de Python o #!/bin/sh para un script de shell POSIX más genérico.

P: ¿Puedo ejecutar un archivo .sh con un doble clic en mi entorno de escritorio?

R: Sí, la mayoría de los entornos de escritorio de Linux (como GNOME o KDE) te permitirán ejecutar un script haciendo doble clic en él. A menudo te preguntarán si deseas ejecutarlo en una terminal o simplemente ejecutarlo. Sin embargo, si el script es rápido, la ventana de la terminal podría abrirse y cerrarse inmediatamente, sin darte tiempo a ver la salida. Por eso, para desarrollo y depuración, siempre es mejor ejecutar los scripts directamente desde una terminal abierta.

P: ¿Cuál es la diferencia entre `sh script.sh` y `bash script.sh`?

R: `bash` (Bourne-Again SHell) es un intérprete de shell específico y muy popular que incluye muchas características modernas. `sh` (Bourne SHell) es el shell original de Unix. En muchos sistemas Linux modernos, /bin/sh es en realidad un enlace simbólico a /bin/bash o a otro shell compatible como dash. Usar bash script.sh garantiza explícitamente que tu script se ejecute con Bash, lo cual es importante si utilizas funcionalidades que son exclusivas de Bash (conocidas como "bashisms").

Conclusión

Ejecutar archivos .sh es una habilidad esencial en el mundo de Linux. Te abre las puertas a la automatización, la personalización y una comprensión mucho más profunda de cómo funciona tu sistema operativo. Hemos cubierto desde la creación y los permisos hasta los diferentes métodos de ejecución y la solución de problemas comunes. Con esta base, ya estás preparado para empezar a escribir y ejecutar tus propios scripts, simplificando tareas y convirtiéndote en un usuario de Linux mucho más eficiente y poderoso. La clave, como siempre, es la práctica, así que no dudes en experimentar y crear tus propias herramientas de automatización.

Si quieres conocer otros artículos parecidos a Ejecuta Scripts .sh en Linux: La Guía Definitiva puedes visitar la categoría Juegos.

Subir