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

我一直在尝试在我的f12系统上安装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
601794 次浏览

你的配置文件包含CRLF行结束 (windows风格)而不是简单的LF行结束符(unix风格)。你是从Windows中使用FTP模式ASCII传输的吗?

你可以使用

dos2unix configure

来解决这个问题,或者在vi中打开它并使用:%s/^M//g;来替换它们(使用CTRL+VCTRL+来得到^M)

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

您需要使用Unix行结束符重新保存文件。

你可能有一个dos2unix命令行实用程序也会为你做这件事。

为了解决这个问题,用vi或vim打开你的脚本,并进入vi命令模式(键Esc),然后输入以下内容:

:set fileformat=unix

最后保存

:x!:wq!

如果你在OS X上,你可以在XCode中通过打开文件并选择

View -> Text -> Line ends -> Unix

菜单项,然后保存。这是针对XCode 3.x的。可能在XCode 4中也有类似的东西。

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

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

下面是理查德的评论。下面是将文件转换为UNIX行结束符的简单方法。如果你像我一样在Windows记事本中创建它,然后试图在Linux中运行它——这是个坏主意。

  1. 下载并安装自己的notepad++副本(免费)。
  2. 在notepad++中打开脚本文件。
  3. __abc0 -> __abc1 ->
  4. 另存为类型: Unix script file (*.sh;*.bsh)
  5. 将新的.sh文件复制到您的Linux系统
  6. 最大限度地使用:chmod 755 the_script_filename可执行
  7. 使用:./the_script_filename运行它

任何其他问题试试这个链接

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

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

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

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

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

希望这能有所帮助。

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

你也可以在Kate中这样做。

  1. 打开文件
  2. 打开工具”菜单
  3. 展开行结束子菜单
  4. 选择UNIX
  5. 保存文件。

多亏了pwc101对这篇文章的注释,这个命令在Kali Linux中可以工作。

sed -i s/{ctrl+v}{ctrl+m}// {filename}

确保你替换了括号中的位,{}。例如,{ctrl+m}意味着同时按Ctrl键和键。

如果您找不到,运行命令,

CentOS:

# yum install dos2unix*


# dos2unix filename.sh
dos2unix: converting file filename.sh to Unix format ...

Ubuntu / Debian:

# apt-get install dos2unix

linux下使用dos2unix命令转换保存的文件。 例子:< / p >

dos2unix file_name

如果你正在使用TextMate或类似的程序,请另存为,然后在编码中选择LF而不是CRLF

当你在windows环境下编写脚本并想要在unix环境下运行时,你需要小心编码:

dos2unix filePath美元

只是在脚本名称之前添加sh,使它在我的情况下工作。