Cuando intentaba ejecutar todos los scripts en un directorio usando el comando run-parts, me encontré con un error:"run-parts:error al ejecutar script.sh:error de formato Exec" . Los scripts funcionaron bien cuando los ejecuté directamente como "./script.sh" y "sh script.sh". Pero no funcionaron cuando los ejecuté con el comando run-parts. Para aquellos que se preguntan, el comando run-parts ejecutará todos los scripts en un directorio. Si recibió un error como este mientras ejecutaba un script, este consejo rápido lo ayudará a corregir el "Error de formato Exec" al ejecutar scripts con el comando run-parts en Linux.
Reparar "Error de formato Exec" al ejecutar secuencias de comandos con el comando run-parts
Para ejecutar todos los scripts en la carpeta Documentos, ejecuté:
$ run-parts --regex '^s.*\.sh
Recibí el siguiente mensaje de error:
run-parts: failed to exec Documents/script1.sh: Exec format error run-parts: Documents/script1.sh exited with return code 1 run-parts: failed to exec Documents/script2.sh: Exec format error run-parts: Documents/script2.sh exited with return code 1 run-parts: failed to exec Documents/script3.sh: Exec format error run-parts: Documents/script3.sh exited with return code 1 run-parts: failed to exec Documents/script4.sh: Exec format error run-parts: Documents/script4.sh exited with return code 1
run-parts:error al ejecutar script.sh:error de formato Exec
Para corregir el "Error de formato Exec", debe agregar un shebang al comienzo de sus scripts para que el núcleo sepa cómo ejecutarlos. Para aquellos que se preguntan, un shebang es la secuencia de caracteres que consta de los caracteres signo de número y signo de exclamación (
La mayoría de los guiones comienzan con un tinglado. Estos son algunos ejemplos típicos de shebang.
Concha de Bourne , o un shell compatible:
#!/bin/sh
Golpe:
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/python
#!/usr/bin/python3
Esto es lo que llamamos un tinglado.
Ahora, volvamos al tema. Edite sus guiones con su editor favorito:
$ nano Documents/ostechnix.sh
Agregue el siguiente shebang al principio del guión:
#!/bin/sh
Solucione el "error de formato Exec" al ejecutar secuencias de comandos con partes de ejecución
Ahora puede ejecutar los scripts con el comando run-parts sin ningún problema usando el comando run-parts.
Actualización:
Como uno de nuestros lectores Mr.Danesh mencionado en la sección de comentarios a continuación, en lugar de codificar la ruta del intérprete, por ejemplo,
#!/usr/bin/python3
Podemos usar:
#!/usr/bin/env python3
Esto es más portátil en caso de que el intérprete esté instalado en algún otro directorio (no predeterminado). env es un comando de shell para sistemas operativos Linux y similares a Unix. Los scripts de shell suelen utilizarlo para iniciar el intérprete correcto.
También puede usar ShellCheck utilidad para encontrar problemas en sus scripts de shell.
- ShellCheck:una utilidad gratuita para encontrar errores en sus scripts de Shell
Descargar – Guía gratuita:“Guía avanzada de Bash-Scripting”
Espero que esto ayude.