Когда я пытался запустить все скрипты в каталоге с помощью команды run-parts, я столкнулся с ошибкой – «run-parts: failed to exec script.sh: Exec format error». С
крипты работали очень хорошо, когда я выполнял их напрямую, например «./script.sh» и «sh script.sh».
Но они не работали, когда я запускал их командой run-parts.
Для тех, кто интересуется, команда run-parts запускает все скрипты в каталоге.
Если вы получили такую ошибку при запуске скрипта, этот быстрый совет поможет вам исправить ошибку «Exec format error» при запуске скриптов с командой run-parts на Linux.
Решение ошибки «Exec format» при запуске скриптов командой run-parts
Чтобы запустить все скрипты в папке «Documents», я запустил:
$ run-parts --regex '^s.*\.sh$' Documents
Я получил следующее сообщение об ошибке:
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
Чтобы исправить «ошибку формата Exec», вам нужно добавить шебанг в начале ваших скриптов, чтобы ядро знало, как их запускать.
Для тех, кому интересно, шебанг – это последовательность символов, состоящая из знака числа символов и восклицательного знака (#!) в начале скрипта.
Когда вы добавляете shebang в начале текстового файла, он интерпретируется как исполняемый файл.
Большинство скриптов начинается с шебанга.
Вот несколько типичных примеров Шебанга:
Bourne shell, или совместимый шеллl:
#!/bin/sh
Bash:
#!/bin/bash
Perl:
#!/usr/bin/perl
Python 2.x:
#!/usr/bin/python
Python 3.x:
#!/usr/bin/python3
Это то, что мы называем шебанг.
Теперь вернемся к теме.
Отредактируйте ваши скрипты, используя ваш любимый редактор:
$ nano Documents/itsecforu.sh
Добавьте шебанг в начале скрипта:
#!/bin/sh
Теперь вы можете без проблем запускать скрипты с помощью команды run-parts, используя команду run-parts.
Вы также можете использовать утилиту ShellCheck для поиска проблем в своих скриптах оболочки.