2017-02-14 126 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

我認爲是這樣 - 但推理說明解釋可能比修正更有價值,以防其他編輯器以相同方式破解。 –

相關問題