./configure:/ bin / sh ^ M:糟糕的翻译

时间:2010-05-27 10:49:53

标签: linux bash shell newline

我一直在尝试在我的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

15 个答案:

答案 0 :(得分:701)

要修复,请使用vi或vim打开脚本并输入vi命令模式(键 Esc ),然后键入:

:set fileformat=unix

最后保存

:x!:wq!

答案 1 :(得分:358)

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

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

您可能有一个dos2unix命令行实用程序也可以为您执行此操作。

答案 2 :(得分:88)

或者如果您想使用脚本执行此操作:

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

答案 3 :(得分:41)

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

您可以使用

dos2unix configure

修复此问题,或在vi中打开它并使用:%s/^M//g;替换它们(使用 CTRL + V CTRL + M 得到^ M)

答案 4 :(得分:25)

您可以使用以下命令修复

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

答案 5 :(得分:13)

如果找不到运行命令,

<强> CentOS的:

# yum install dos2unix*

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

Ubuntu / Debian:

# apt-get install dos2unix

答案 6 :(得分:10)

当您从Windows编辑文件并尝试从某些基于unix的计算机执行该文件时,通常会发生这种情况。

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

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

希望这有帮助。

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

答案 7 :(得分:5)

如果您使用的是OS X,则可以通过打开文件并选择

来更改XCode中的行结尾

查看 - &gt;文字 - &gt;线路结尾 - &gt; Unix的

菜单项,然后保存。这适用于XCode 3.x.在XCode 4中可能类似。

答案 8 :(得分:4)

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

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

    任何其他问题try this link

答案 9 :(得分:4)

感谢pwc101对this post的评论,这个命令在Kali Linux中有效。

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

确保替换括号{}中的位。即{ctrl+m}表示同时按 Ctrl 键和 M 键。

答案 10 :(得分:4)

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

dos2unix file_name

答案 11 :(得分:3)

您也可以在Kate中执行此操作。

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

答案 12 :(得分:2)

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

答案 13 :(得分:2)

当您在Windows环境中编写脚本并且想要在unix环境中运行它时,您需要注意编码:

dos2unix $ filePath

答案 14 :(得分:2)

在脚本名称之前添加sh,使其在我的情况下有用。