2017-02-14 107 views
0

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

Linux version 3.3.4-5.fc17.x86_64 ([email protected]) (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 

你有一个想法?

回答

1

确定的问题来自于VIM的的.vimrc配置文件选项

set bomb 

。评论此行解决问题。

1

第一行开始与一些不可见的字符,如在你的错误信息:

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

您可以

od -t x1c -N 10 script.ksh 

证实了这一点删除那些字符,现在它将以魔术#!开始。你也许可以做到这一点的方法之一是第一

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

测试它没有-i选项(通过管道将它变成od检查结果)。

+0

事实上,这就是vim中“bomb”选项的作用:在文件中添加BOM标记。 – youyou

+0

我认为是这样 - 但推理说明解释可能比修正更有价值,以防其他编辑器以相同方式破解。 –

相关问题