./configure:/ bin / sh ^ M:错误的解释器

我一直在试图在我的fed 12系统上安装lpng142。 对我来说似乎是一个问题。 我得到这个错误

[root@localhost lpng142]# ./configure bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory [root@localhost lpng142]# 

我该如何解决? /etc/fstab文件:

 # # /etc/fstab # Created by anaconda on Wed May 26 18:12:05 2010 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/VolGroup-lv_root / ext4 defaults 1 1 UUID=ce67cf79-22c3-45d4-8374-bd0075617cc8 /boot ext4 defaults 1 2 /dev/mapper/VolGroup-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 

要解决这个问题,用vi或者vim打开你的脚本,然后进入vi命令模式(ESC键),然后input:

 :set fileformat=unix 

最后保存它

:x! 或者:wq!

看起来你有一个DOS线结束文件。 线索是^M

您需要使用Unix行尾重新保存文件。

你可能有一个dos2unix命令行实用程序,也将为你做这个。

或者如果你想用脚本来做到这一点:

 sed -i 's/\r//' filename 

您的configuration文件包含CRLF行结尾 (Windows风格),而不是简单的LF行尾(unix风格)。 您是否使用Windows的FTP模式ASCII传输它?

您可以使用

 dos2unix configure 

解决这个问题,或者在vi中打开它并使用:%s/^M//g; 把它们全部replace掉​​(用CTRL + VCTRL + M得到^ M)

您可以使用以下命令来修复

 cat file_name.sh | tr -d '\r' > file_name.sh.new 

如果找不到命令,

CentOS的:

 # yum install dos2unix* # dos2unix filename.sh dos2unix: converting file filename.sh to Unix format ... 

Ubuntu / Debian:

 # apt-get install dos2unix 

这通常发生在你从Windows编辑文件,现在试图从一些基于Unix的机器上执行文件时。

在Linux论坛上提出的解决scheme为我工作(很多次):

 perl -i -pe's/\r$//;' <file name here> 

希望这可以帮助。

PS:你需要在你的unix / linux机器上安装perl。

如果您使用OS X,则可以通过打开文件并select,更改XCode中的行结束符

查看 – >文本 – >行尾 – > Unix

菜单项,然后保存。 这是XCode 3.x. 可能在XCode 4中有类似的地方。

继理查德的评论之后。 这是将文件转换为UNIX行尾的简单方法。 如果你像我一样,你在Windows记事本中创build它,然后尝试在Linux中运行它 – 坏主意。

  1. 下载并安装Notepad ++ (免费)的副本。
  2. 在Notepad ++中打开您的脚本文件。
  3. 文件菜单 – > 另存为 – >
  4. 另存为types: Unix script file (*.sh;*.bsh)
  5. 将新的.sh文件复制到您的Linux系统
  6. Maxe它可以执行: chmod 755 the_script_filename
  7. 运行它: ./the_script_filename

任何其他问题尝试此链接 。

你也可以在凯特做这个。

  1. 打开文件
  2. 打开工具菜单
  3. 展开“行尾”子菜单
  4. selectUNIX
  5. 保存文件。

感谢pwc101对这篇文章的评论,这个命令在Kali Linux中工作。

sed -is/{ctrl+v}{ctrl+m}// {filename}

确保您replace括号内的位, {} 。 即{ctrl+m}表示按住Ctrl键和M键在一起。

在linux中使用dos2unix命令转换保存的文件。 例如:

 dos2unix file_name 

在脚本名称之前加上sh使它适用于我的情况。

如果您正在使用TextMate或类似的程序,请保存为,然后在编码中selectLF而不是CRLF

当你在Windows环境下编写你的脚本,并且你想在unix环境中运行它时,你需要小心编码:

dos2unix $ filePath