Исправление «ошибки формата Exec» при запуске сценариев с помощью команды run-parts.
Когда я пытался запустить все сценарии в каталоге с помощью команды run-parts, я столкнулся с ошибкой - "run-parts: не удалось выполнить script.sh: ошибка формата Exec". Сценарии работали нормально, когда я запускал их напрямую, запустив «./script.sh
» или «sh script.sh
». Но они не работали, когда я запускал их с помощью команды run-parts
. Для тех, кому интересно: команда run-parts
запустит все сценарии в каталоге. Если вы получили подобную ошибку при запуске сценария, этот быстрый совет поможет вам исправить «Ошибку формата Exec» при запуске сценариев с помощью команды run-parts в Linux.
Исправление «ошибки формата Exec» при запуске сценариев с помощью команды run-parts.
Чтобы запустить все скрипты в папке «Документы», я запустил:
run-parts --regex '^s.*\.sh
Я получил следующее сообщение об ошибке:
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: не удалось выполнить script.sh: ошибка формата выполнения
Чтобы исправить «ошибку формата Exec» в Linux, вам необходимо добавить shebang в начало ваших сценариев, чтобы ядро знало, как их запускать.
Для тех, кому интересно: шебанг — это последовательность символов, состоящая из символов цифрового знака и восклицательного знака (#!) ) в начале скрипта. Когда вы добавляете шебанг в начало текстового файла, он интерпретируется как исполняемый файл.
Большинство скриптов начинаются с шебанга. Вот несколько типичных примеров шебанга.
Оболочка Bourne или совместимая оболочка:
#!/bin/sh
Баш:
#!/bin/bash
Перл:
#!/usr/bin/perl
Python 2.x:
#!/usr/bin/python
Python 3.x:
#!/usr/bin/python3
Это то, что мы называем шебанг.
Теперь вернемся к теме. Редактируйте свои скрипты, используя ваш любимый редактор:
nano Documents/ostechnix.sh
Добавьте следующий шебанг в начало скрипта:
#!/bin/sh
Исправить «Ошибку формата Exec» при запуске сценариев с помощью run-parts.
Нажмите CTRL+
, а затем CTRL+X
, чтобы сохранить файл и закрыть его.
Теперь вы можете без проблем запускать сценарии с помощью команды run-parts
.
Обновление:
Как один из наших читателей Mr.Danesh упомянул в разделе комментариев ниже: вместо жесткого кодирования пути интерпретатора, например
#!/usr/bin/python3
Мы можем использовать:
#!/usr/bin/env python3
Это более переносимо, если интерпретатор установлен в каком-либо другом каталоге (не по умолчанию). env — это команда оболочки для Linux и Unix-подобных операционных систем. Он часто используется сценариями оболочки для запуска правильного интерпретатора.
Вы также можете использовать утилиту ShellCheck для поиска проблем в сценариях оболочки.
- ShellCheck — бесплатная утилита для поиска ошибок в сценариях оболочки
Надеюсь это поможет.