在windows环境下载了几个linux的库,放到linux平台去编译的时候,遇到了bug:
-bash: ./*.sh: /bin/sh^M: bad interpreter:
查了相关资料发现,是由于DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是 0A。DOS格式的文本文件在Linux底下,用较低版本的vi打开时行尾会显示^M。
在linux下有工具可以完成从Dos文件到unix文件的转换,就是dos2unix。
dos2unix的用法:
$dos2unix 文件名
当文件夹下的所有文件(或者部分文件)都有转换需求时,可以用以下方法:
$for f in *.* //*.*表示所有文件,可以换成其它条件
>do
>dos2unix $f
>done