在windows上用Edit工具简单地写了一个自动编译的shell脚本,在Linux系统下执行时报错如下:
xxx:bad interpreter: No such file or directory。
查了【单词interpreter:解释者;翻译器】,才想起来,Window系统中用/r/n来表示换行,linux中用/n来表示换行,Windows的文本文件,直接拿到linux中使用可能会会出错。不过可以通过以下方法解决:
方法一:在windows下转换:
利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。
方法二:dos2unix转换:
dos2unix工具就是将Windows文本文件中/n之前挨着的/r字符去掉,实际上就是把文本文件里面的^M删除。使用方法即:
dos2unix filename
就可以把DOS格式的文件转换为UNIX格式的文件了,特别是Linux程序员在Windows与Linux之前拷贝代码文件时,会经常遇到格式解析异常的问题,所以这个工具也会被经常使用到。但是Unix默认是不带dos2unix命令工具的,需要自己安装。安装方法网上有很多,此处不作赘述。
方法三:在Linux中用vi编辑器来编辑转换:
首先要确保文件有可执行权限
#sh>chmod a+x filename
然后修改文件格式
#sh>vi filename
利用如下命令查看文件格式
:set ff 或 :set fileformat
可以看到如下信息
fileformat=dos 或 fileformat=unix
利用如下命令修改文件格式
:set ff=unix 或 :set fileformat=unix
保存退出
:wq
然后再执行文件,就不会有以上错误信息了。