您的位置:首页 > 运维架构 > Linux

UNIX/Linux下运行脚本文件出现bad interpreter:No such file or directory的原因和解决办法

2009-11-02 09:20 1151 查看

UNIX/Linux下运行脚本文件出现bad interpreter:No such file or directory的原因和解决办法

@for&ever 2009-11-2

一、现象描述:

Windows下面编写脚本 forandever.sh,上传到Unix/Linux下面,执行如下命令运行:

#chmod +x forandever.sh
#./forandever.sh

错误如下:
bash: ./back : bad interpreter:No such file or directory

二、问题原因:

文件格式问题。因为Windows 和 Unix/Linux 的文件换行方式不一样。

例如,文件是在Windows下编写的,换行方式采用的是Windows下面的方式,但是在Unix/Linux的 VI下面如果不Set一下则看不出来差别。
Windows下脚本文件一般默认是DOS格式的, 行尾以/r/n来标识, 其ASCII码分别是0x0D, 0x0A.

三、解决办法:

转换不同平台的文本文件格式到对应的平台。

1. 使用unix2dos或dos2unix
在C系统DJGPP中名字为dtou和utod, u代表unix, d代表dos

2. 用sed
sed 's/^M//' filename > tmp_filename
mv -f tmp_filename filename

其中:^M是一个字符, 其ASCII是0x0D, 生成办法:先按CTRL+V, 然后再回车或CTRL+M

3、在Windows下面使用 UE或者 EmEditor 等文本编辑器打开文件,
然后另存为,选择文件保存的格式中,换行方式里面选择 仅Unix(LF)保存后上传即可。

四、附:
如何检查文件格式?(DOS格式、UNIX格式、MAC格式)

1、 VI命令
#vi filename
#:set ff?
这时,可看到dos或unix字样。
如果是dos格式, 用set ff=unix把它强制转换为unix格式, 存盘退出应该即可运行。

2、joe命令
#joe filename
如果是DOS格式, 行尾会有很多绿色的^M字样。

3、od命令
#od -t x1 filename
如果有0d 0a 等字符, 是dos格式, 如果只有0a而没有0d, 是UNIX格式。

@forandever 2009-11-2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐