./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 + V , CTRL + 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中运行它 – 坏主意。
- 下载并安装Notepad ++ (免费)的副本。
- 在Notepad ++中打开您的脚本文件。
- 文件菜单 – > 另存为 – >
- 另存为types:
Unix script file (*.sh;*.bsh)
- 将新的.sh文件复制到您的Linux系统
- Maxe它可以执行:
chmod 755 the_script_filename
- 运行它:
./the_script_filename
任何其他问题尝试此链接 。
你也可以在凯特做这个。
- 打开文件
- 打开工具菜单
- 展开“行尾”子菜单
- selectUNIX
- 保存文件。
感谢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