Поиск по сайту:

Исправление «ошибки формата 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 — бесплатная утилита для поиска ошибок в сценариях оболочки

Надеюсь это поможет.

Статьи по данной тематике