Když jsem se snažil spustit všechny skripty v adresáři pomocí příkazu run-parts jsem narazil na chybu - "run-parts:failed to exec script.sh:Exec format error" . Skripty fungovaly dobře, když jsem je přímo spouštěl jako "./script.sh" a "sh script.sh". Ale nefungovaly, když jsem je spustil příkazem run-parts. Pro ty, kdo by byli zvědaví, příkaz run-parts spustí všechny skripty v adresáři. Pokud se při spouštění skriptu vyskytne taková chyba, tento rychlý tip vám pomůže opravit „chybu formátu Exec“ při spouštění skriptů s příkazem run-parts v Linuxu.
Oprava „chyby formátu Exec“ při spouštění skriptů pomocí příkazu run-parts
Pro spuštění všech skriptů ve složce Dokumenty jsem spustil:
$ run-parts --regex '^s.*\.sh
Zobrazila se mi následující chybová zpráva:
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:nepodařilo se spustit skript.sh:Chyba formátu Exec
Chcete-li opravit „chybu formátu Exec“, musíte přidat shebang na začátku vašich skriptů, takže jádro bude vědět, jak je spustit. Pro ty, kdo by se zajímali, je shebang posloupnost znaků skládající se ze znaků znak čísla a vykřičník (#! ) na začátku skriptu. Když přidáte shebang na začátek textového souboru, bude interpretován jako spustitelný soubor.
Většina skriptů začíná znakem Shebang. Zde je několik typických příkladů shebang.
Bourne shell , nebo kompatibilní shell:
#!/bin/sh
Bash:
#!/bin/bash
Perl:
#!/usr/bin/perl
Python 2.x:
#!/usr/bin/python
Python 3.x:
#!/usr/bin/python3
Tomu říkáme shebang.
Nyní se vraťme k tématu. Upravte své skripty pomocí svého oblíbeného editoru:
$ nano Documents/ostechnix.sh
Na začátek skriptu přidejte následující shebang:
#!/bin/sh
Oprava „Chyba formátu Exec“ při spouštění skriptů s run-parts
Nyní můžete být schopni spouštět skripty pomocí příkazu run-parts bez jakýchkoli problémů pomocí příkazu run-parts.
Aktualizace:
Jako jeden z našich čtenářů pan Danesh zmíněno v sekci komentářů níže, Místo pevného kódování cesty tlumočníka, např.
#!/usr/bin/python3
Můžeme použít:
#!/usr/bin/env python3
Toto je více přenosné v případě, že je interpret nainstalován v nějakém jiném (nevýchozím) adresáři. env je příkaz shellu pro Linux a operační systémy podobné Unixu. Často jej používají skripty shellu ke spuštění správného interpretu.
Můžete také použít ShellCheck nástroj k nalezení problémů ve skriptech shellu.
- ShellCheck – bezplatný nástroj k nalezení chyb ve skriptech Shell
Stáhnout – Bezplatný průvodce:„Pokročilý průvodce skriptováním Bash“
Doufám, že to pomůže.