2013-12-10 97 views
2

我們使用記事本++ v6.4.5編輯中文Windows XP sp3中的Bash腳本。編碼格式爲不含BOM的UTF-8。第一行代碼如下:執行第一行linux bash腳本時發生錯誤

#!/bin/sh 

該源在Centos 6.4(Linux,LANG = en_US.UTF-8)上執行。但是,我們收到以下錯誤消息:

for242.sh: line 1: 鍩?!/bin/sh: No such file or directory 

您能幫助我們嗎?非常感謝。 Centos linux的配置如下:

[[email protected] ]# locale 
LANG=en_US.UTF-8 
LC_CTYPE="en_US.UTF-8" 
LC_NUMERIC="en_US.UTF-8" 
LC_TIME="en_US.UTF-8" 
LC_COLLATE="en_US.UTF-8" 
LC_MONETARY="en_US.UTF-8" 
LC_MESSAGES="en_US.UTF-8" 
LC_PAPER="en_US.UTF-8" 
LC_NAME="en_US.UTF-8" 
LC_ADDRESS="en_US.UTF-8" 
LC_TELEPHONE="en_US.UTF-8" 
LC_MEASUREMENT="en_US.UTF-8" 
LC_IDENTIFICATION="en_US.UTF-8" 
LC_ALL= 

回答

1

無論如何,它看起來像文件的開始處有一個BOM。這是Windows上的標準。如果您有dos2unix版本6.0.0或更高版本,您可以使用dos2unix刪除UTF-8 BOM。如果你沒有這個版本的dos2unix你可以自己構建它。從http://sourceforge.net/projects/dos2unix/

問候,

+0

我們使用「UTF-8 WITHOUT BOM」測試了一個新的bash文件,它可以工作。看來記事本++的「轉換爲UTF-8無BOM」菜單不起作用。 – Eman

0

您可能在該bangline的末尾有一個CR。您需要將文本文件轉換爲Unix行尾。

-1

當你ftp你的cmds到你的linux機器時,看你的ftp客戶端是否有「轉換」功能。

否則使用相對標準的實用程序dos2unix filename來清理文件並刪除拖尾回車。

最後,你確定確實有東西安裝爲/bin/sh?您已將您的問題標記爲bash,爲什麼不使用#!/bin/bash如果將腳本移動到作爲Bourne shell的環境(真實/bin/sh),爲避免混淆?

IHTH

+0

謝謝。我們使用了** dos2unix **來轉換bash文件,我們也測試了**#!/ bin/bash **。錯誤再次發生。 – Eman