Cómo ejecutar un Script de Shell en Linux [Explicación de lo Esencial para principiantes]

Hay dos formas de ejecutar un script de shell en Linux. Puedes usar:

bash script.sh

O puede ejecutar el script de shell de esta manera:

./script.sh

Eso puede ser simple, pero no explica mucho. No se preocupe, explicaré lo necesario con ejemplos para que entienda por qué se usa una sintaxis en particular en el formato dado mientras ejecuta un script de shell.

Voy a usar este script de shell de una línea para hacer las cosas lo más sencillas posible:

:~/Scripts$ cat hello.sh echo "Hello World!"

Método 1: Ejecutar un script de shell pasando el archivo como argumento al shell

El primer método consiste en pasar el nombre del archivo de script como argumento al shell.

Teniendo en cuenta que bash es el shell predeterminado, puede ejecutar un script como este:

bash hello.sh

¿Conoce la ventaja de este enfoque? Su script no necesita tener el permiso de ejecución. Muy útil para tareas rápidas y sencillas.

Ejecutar un Script de Shell Linux
Ejecutar un Script de Shell Linux

Si aún no está familiarizado, le aconsejo que lea mi guía detallada sobre el permiso de archivos en Linux.

Tenga en cuenta que debe ser un script de shell que pase como argumento. Un script de shell se compone de comandos. Si utiliza un archivo de texto normal, se quejará de comandos incorrectos.

Ejecutar un Archivo de Texto como Script en Linux
Ejecutar un Archivo de Texto Como Script

En este enfoque, especificó explícitamente que desea usar bash como intérprete para el script.

Shell es solo un programa y bash es una implementación de eso. Hay otros programas como ksh, zsh, etc. Si tienes otros shells instalados, también puedes usarlos en lugar de bash.

Por ejemplo, instalé zsh y lo usé para ejecutar el mismo script:

Ejecutar Shell Script Con Zsh
Ejecutar Shell Script Con Zsh

Lectura Recomendada:

Método 2: Ejecuta el script de shell especificando su ruta

El otro método para ejecutar un script de shell es proporcionando su ruta. Pero para que eso sea posible, su archivo debe ser ejecutable. De lo contrario, tendrá el error «permiso denegado» cuando intente ejecutar el script.

Así que primero debe asegurarse de que su script tenga el permiso de ejecución. Puede usar el comando chmod para darse este permiso de esta manera:

chmod u+x script.sh

Una vez que su script es ejecutable, todo lo que necesita hacer es escribir el nombre del archivo junto con su ruta absoluta o relativa. La mayoría de las veces se encuentra en el mismo directorio, por lo que solo lo usa de esta manera:

./script.sh

Si no se encuentra en el mismo directorio que el script, puede especificar la ruta absoluta o relativa al script:

Ejecutar Shell Script En Otro Directorio
Ejecutar Shell Script En Otro Directorio

Eso ./ antes de que el script sea importante (cuando estás en el mismo directorio que el script)

Ejecutando Scripts de Shell Linux

¿Por qué no puedes usar el nombre del script cuando estás en el mismo directorio? Esto se debe a que sus sistemas Linux buscan que los ejecutables se ejecuten en unos cuantos directorios seleccionados que se especifican en la variable PATH.

Aquí está el valor de la variable PATH para mi sistema:

:~$ echo $PATH/home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Esto significa que cualquier archivo con permisos de ejecución en uno de los siguientes directorios se puede ejecutar desde cualquier lugar del sistema:

  • /inicio/abhishek/.local/bin
  • /usr/local/sbin
  • /usr/local/bin
  • /usr/sbin
  • /usr/bin
  • /sbin
  • /bin
  • /usr/games
  • /usr/local/games
  • /snap/bin

Los archivos binarios o ejecutables para Linux comandos como ls, cat, etc se encuentran en uno de esos directorios. Esta es la razón por la que puede ejecutar estos comandos desde cualquier lugar de su sistema con solo usar sus nombres. Vea, el comando ls se encuentra en el directorio/usr / bin.

Comando de Localización Linux

Cuando se especifica el script SIN la ruta de acceso absoluta o relativa, no se puede encontrar en los directorios mencionados en la variable de ruta de acceso.

¡Por qué la mayoría de los scripts de shell contienen #! / bin / bash al principio de los scripts de shell?

Recuerde que mencioné que shell es solo un programa y hay diferentes implementaciones de shells.

Cuando usas el #! / bin / bash, está especificando que el script se ejecutará con bash como intérprete. Si no lo hace y ejecuta un script ./script.sh manera, por lo general se ejecuta con cualquier concha que se está ejecutando.

¿importa? Podría. La mayor parte de la sintaxis del shell es común en todo tipo de shell, pero algunos pueden diferir.

Por ejemplo, el comportamiento de la matriz es diferente en shells bash y zsh. En zsh, el índice de matriz comienza en 1 en lugar de 0.

Bash Vs Zsh
Bash Vs Zsh

Usando #! / bin / bash indica que el script es un script de shell de bash y debe ejecutarse con bash como intérprete independientemente del shell que se esté utilizando en el sistema. Si está utilizando sintaxis específica de zsh, puede indicar que se trata de un script zsh añadiendo #! / bin / zsh como primera línea del script.

El espacio entre #! / bin / bash no importa. También puedes usar #!/ bin / bash.

Fue útil?

Espero que este artículo se haya agregado a su conocimiento de Linux. Si aún tiene preguntas o sugerencias, deje un comentario.

Los usuarios expertos aún pueden seleccionar este artículo sobre cosas que me perdí. Pero el problema con estos temas para principiantes es que no es fácil encontrar el equilibrio adecuado de información y evitar tener demasiados o muy pocos detalles.

Si está interesado en aprender el script bash, tenemos una serie completa para principiantes Bash en nuestro manual de Linux del sitio web centrado en administradores de sistemas. Si lo desea, también puede comprar el libro electrónico con ejercicios adicionales para apoyar el Manual de Linux.

¿Te gusta lo que lees? Por favor, compártalo con otros.

50Shares
  • Facebook0
  • Twitter49
  • LinkedIn1
  • Reddit0

Leave a Reply

Deja una respuesta

Tu dirección de correo electrónico no será publicada.