我一直在尝试在我的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
答案 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中运行它 - 糟糕的主意。
Unix script file (*.sh;*.bsh)
chmod 755 the_script_filename
./the_script_filename
任何其他问题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中执行此操作。
答案 12 :(得分:2)
如果您使用的是TextMate或类似的程序,请另存为,然后在编码中选择LF
而不是CRLF
。
答案 13 :(得分:2)
当您在Windows环境中编写脚本并且想要在unix环境中运行它时,您需要注意编码:
dos2unix $ filePath
答案 14 :(得分:2)
在脚本名称之前添加sh,使其在我的情况下有用。