Exec格式错误。二进制文件不可执行

时间:2017-02-14 12:27:20

标签: linux shell

我在

Linux version 3.3.4-5.fc17.x86_64 (mockbuild@x86-14.phx2.fedoraproject.org) (gcc version 4.7.0 20120504 (Red Hat 4.7.0-4) (GCC) ) #1 SMP Mon May 7 17:29:34 UTC 2012

尝试运行具有权限775且包含:

的基本可执行script.ksh文件
#!/bin/ksh
echo "hello ya"

但我有:

$./script.ksh
 ./script.ksh: Exec format error. Binary file not executable.

问题看起来像来自shebang,但我无法弄清楚为什么以及如何。 我可以通过执行此操作来运行脚本(请注意第一行的奇怪输出):

$ ksh script.ksh
script.ksh[1]: ?o?;??#!/bin/ksh: not found [No such file or directory]
hello ya

一些(可能)有用的输出:

$ file script.ksh
script.ksh: Korn shell script, UTF-8 Unicode (with BOM) text executable
$ which ksh
/bin/ksh
你知道吗?

2 个答案:

答案 0 :(得分:1)

好的问题来自选项

set bomb

在vim的.vimrc配置文件中。注释这一行可以解决问题。

答案 1 :(得分:1)

第一行以一些不可见的字符开头,如错误消息所示:

  

?o?;??#!/bin/ksh:未找到

您可以使用

确认
od -t x1c -N 10 script.ksh

删除这些字符,现在它将以魔法#!开头。你可以做到这一点的一种方法是

sed -i -e '1s/^[^#]*//' script.ksh

首先测试它而不使用-i选项(您可以将其输入od以检查结果)。