的./configure:/ bin / sh的^ M:坏翻译[复制]的./configure:/

2019-05-10 11:12发布

这个问题已经在这里有一个答案:

  • 是shell脚本编码和行尾敏感? 5个回答

我一直在想我的美联储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

Answer 1:

要解决,用vi或者vim打开你的脚本,并在vi命令模式(Esc键 )进入,然后键入以下内容:

:set fileformat=unix

最后保存

:x!:wq!



Answer 2:

看起来你有结束文件中的DOS行。 线索是^M

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

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



Answer 3:

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

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


Answer 4:

您的配置文件包含CRLF行结束 (windows风格),而不是简单的LF行结束符(UNIX风格)。 您在使用FTP ASCII模式从Windows转移呢?

您可以使用

dos2unix configure

解决这个问题,或者在vi和使用其打开:%s/^M//g; 替代他们都(使用CTRL + V,CTRL + M,以获得^ M)



Answer 5:

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

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


Answer 6:

如果你能找到不执行命令,

CentOS的:

# yum install dos2unix*

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

Ubuntu的/ Debian的:

# apt-get install dos2unix


Answer 7:

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

介绍了该解决方案的Linux论坛为我工作(多次):

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

希望这可以帮助。

PS:你需要有你的Unix / Linux机器上安装的perl。



Answer 8:

如果你在OS X,你可以打开该文件,并选择更改行结束在XCode中

查看 - >文字 - >行尾 - > Unix的

菜单项,然后保存。 这是XCode的3.x的 可能是一些XCode中4类似。



Answer 9:

从理查德的评论继。 下面是简单的方法来转换文件到UNIX行尾。 如果你像我一样,你在Windows记事本创建它,然后试图在Linux中运行它 - 坏主意。

  1. 下载并安装自己的副本记事本++ (免费)。
  2. 在记事本++脚本文件。
  3. 文件菜单 - > 另存为 - >
  4. 保存类型: Unix script file (*.sh;*.bsh)
  5. 新.SH文件复制到你的Linux系统
  6. Maxe它可执行文件: chmod 755 the_script_filename
  7. 与运行: ./the_script_filename

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



Answer 10:

在Linux中使用DOS2UNIX的命令来保存文件转换。 例如:

dos2unix file_name


Answer 11:

由于pwc101就评论这个职位 ,这个命令在Linux的卡利工作。

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

确保在括号更换位, {}{ctrl+m}意味着按Ctrl键和M键在一起。



Answer 12:

您也可以做到这一点的凯特。

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


Answer 13:

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



Answer 14:

当你写你在Windows环境脚本和要在UNIX上运行环境在你需要小心的encodage:

DOS2UNIX的文件路径$



Answer 15:

只需添加SH前脚本名称使它在我的情况下工作。



文章来源: ./configure : /bin/sh^M : bad interpreter [duplicate]