使用run-parts命令运行脚本时修复“ Exec格式错误”
时间:2020-03-21 11:43:50 来源:igfitidea点击:
当我尝试使用run-parts命令运行目录中的所有脚本时,遇到错误“ run-parts:无法执行script.sh:Exec格式错误”( "run-parts: failed to exec script.sh: Exec format error".)。
当我直接执行“ ./script.sh”和“ sh script.sh”之类的脚本时,它们的效果很好。
但是,当我使用run-parts命令运行它们时,它们不起作用。
run-parts命令将运行目录中的所有脚本。
如果在运行脚本时遇到这样的错误,此快速提示将在Linux中使用run-parts命令运行脚本时修复“执行格式错误”。
使用run-parts命令运行脚本时修复“ Exec格式错误”
要运行“文档”文件夹中的所有脚本,我运行了:
$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,以便内核知道如何运行它们。
shebang是由脚本开头的字符数字符号和感叹号(#!)组成的字符序列。
当我们在文本文件的开头添加shebang时,它将被解释为可执行文件。
大多数脚本以shebang开头。
这是一些典型的shebang示例。
Bourneshell或者兼容的shell:
#!/bin/sh
bash:
#!/bin/bash
Perl:
#!/usr/bin/perl
Python 2.x:
#!/usr/bin/python
Python 3.x:
#!/usr/bin/python3
这就是我们所说的shebang。
现在,让我们回到主题。
使用我们喜欢的编辑器编辑脚本:
$nano Documents/theitroad.sh
在脚本的开头添加以下shebang:
#!/bin/sh
现在,我们可以使用run-parts命令运行脚本,而不会出现任何问题。
我们可以用:
#!/usr/bin/env python3
而不是硬编码解释器的路径
#!/usr/bin/python3
如果将解释器安装在其他(非默认)目录中,则此方法更可移植。
env是用于Unix和类Unix操作系统的shell命令。
Shell脚本通常使用它来启动正确的解释器。