./configure : /bin/sh^M : bad interpreter
我一直在尝试在我的FED 12系统上安装lpng142。在我看来是个问题。我得到这个错误
1 2 3
| [root@localhost lpng142]# ./configure
bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory
[root@localhost lpng142]# |
我该怎么解决这个问题?/etc/fstab文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #
# /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 |
- 谢谢,dos2unix,省省我的一天。对于OSX用户来说,这变得更容易了。BREW安装dos2unix dos2unix
- vim:set fileformat=unix
- @Triplee帮助我理解为什么你把这个问题标记为重复。这个问题是7年前提出的,而相关问题是一年前提出的。应该是另一条路
- 在决定复制品时,问题的年龄通常不是一个因素。在Google中很容易找到的一个一般性的、有重点的问题通常是一个更好的重复目标,而不是一个模糊的、专门的问题,而答案恰好是相当一般的。
- @三遍都不够令人信服,因为对任何用户来说复制、粘贴错误日志都要容易得多。
- 如果您真的认为副本应该是相反的,请在元堆栈溢出时打开它。据记录,"糟糕的口译员"症状是许多可能的症状之一,关于这个问题中的configure和fstab的细节是分散注意力的。如果合并问题更容易的话,我很乐意将这里的几个答案合并到主副本中。
要修复此问题,请使用vi或vim打开脚本,然后在vi命令模式下输入(键esc),然后键入:
最后保存它
:x!或:wq!。
- 为我节省了宝贵的时间!
- 我对多个文件有相同的问题,如何将其应用于目录树?我是否需要转到每个目录,在vi和do中逐个打开文件:set fileformat=unix?请帮忙。
- 为我工作!谢谢!:)
- :set ff=unix也起作用。
- 为什么用"!"保存??只有当您想放弃更改时才使用,而事实并非如此。如果保存失败,那么可能是你做错了什么。
- 也可以将其添加到.vimrc文件中,这样以后就不用担心了。
- 应该是公认的答案
- 谢谢..有帮助!
- 最肯定的答案应该是公认的。没有什么比使用内置的功能更好的了,就是出去使用某种第三方软件。
- 不适用于我的vi(rapbianjessie)。
- 我认为这是最好的。应该与系统无关,不需要安装工具。+ 1
- 非常优雅有效的解决方案。适用于我(CE 1.7.0.2、Ubuntu、Nginx、Varnish 3.0、松节油)。
- 我用:wq保存。它起作用了,节省了我的时间!
- 我的情况更复杂,因为删除了cr之后,我得到了无效字符错误,所以花了一段时间和十六进制编辑器来发现我在一个文件中还有en.wikipedia.org/wiki/byteorderu mark(unicode)序列-所以我有两个单独的问题。
- 这是否也适用于Solaris 9操作系统?因为它不适合我
看起来您有一个DOS行结束文件。线索是^M。
您需要使用unix行尾重新保存文件。
您可能有一个dos2unix命令行实用程序,它也可以为您做到这一点。
- 是的,^m有点奇怪。我确实在网络的某个地方看到了这个dos2unix配置建议,但不想遇到其他问题。好吧,交叉手指,我试试看:)谢谢你的快速回复,科内拉克和理查德
- 谢谢您!我不明白为什么我的工作停止了…修复了它,但我不记得在Windows中编辑它。
- 如果您试图构建的项目有许多需要转换的脚本(Qt就是这样),那么递归地应用dos2unix可能是个好主意。运行"查找"。-从顶层目录中键入f xargs dos2unix将为您完成此操作。
- 怪异的qt配置文件(从这里的源代码构建)有这个垃圾。叹气真的有用的工具,节省了大量的体力劳动。那么,当下载以zip文件的名义提供的"无处不在"库的源代码时,为什么还要这样做呢?
- dos2unix把它修好了…PS:yum install dos2unix(如果需要)
- 杰出的!对于Sublime Text 3用户,可以通过选择View(视图)->Line Endings(行尾)->Unix来解决这一问题。
- @威兹拉,你的把戏在我的Ubuntu系统上奏效了。
- 在Debian系统(如Ubuntu、Xubuntu、Mint、Raspbian等)上安装sudo apt-get update,然后安装sudo apt-get install dos2unix。
- 感谢您解释错误的原因
或者,如果您想使用脚本执行此操作:
1 2
| sed -i 's/
//' filename |
- +1,在Debian Linux上为我工作
- 不在CentOS上工作
- 这很简单,但只适用于GNU sed。对于bsd/macos sed,您需要使用sed -i '' $'s/
//' filename(来自bash),或者稍微更健壮一些:sed -i '' $'s/
$//' filename。
配置文件包含CRLF行尾(Windows样式),而不是简单的LF行尾(Unix样式)。你用FTP模式从Windows传送它了吗?
你可以使用
要修复此问题,或在vi中打开它,并使用:%s/^M//g;将其全部替换(使用ctrl+vbkbd、ctrl+m获得^m)
- 不,我确实使用Linux下载了.gz文件。不知道CRLF是怎么到那里的。
- VIM搜索和替换更容易输入:%s/
$//g
- 在某些系统(例如最近的debian/ubuntu)上,称为fromdos的二进制文件,而不是dos2unix。
- 谢谢你的解释
可以使用以下命令修复
1 2
| cat file_name.sh | tr -d '
' > file_name.sh.new |
- 这在MacOS X 10.11上也可以。
- 简单而优雅。谢谢
如果找不到,运行命令,
CentOS:
1 2 3 4
| # yum install dos2unix*
# dos2unix filename.sh
dos2unix: converting file filename.sh to Unix format ... |
Ubuntu/Debian:
1
| # apt-get install dos2unix |
当您已经从Windows中编辑了一个文件,现在正试图从一些基于Unix的机器中执行该文件时,通常会发生这种情况。
Linux论坛上的解决方案对我很有效(很多次):
1 2
| perl -i -pe's/
$//;' <file name here> |
希望这有帮助。
PS:您需要在UNIX/Linux机器上安装Perl。
如果您使用的是OS X,则可以通过打开文件并选择
视图->文本->行尾->Unix
菜单项,然后保存。这是针对Xcode3.x的。可能与Xcode4中的类似。
- 或者使用像textwrangler(状态栏中的下拉列表)或sublime(视图>行尾>Unix)这样的编辑器来执行相同的操作。
使用Linux中的dos2unix命令转换保存的文件。例子:
多亏了pwc101对本文的评论,这个命令可以在kali linux中工作。
sed -i s/{ctrl+v}{ctrl+m}// {filename}
确保更换括号中的位,{}。即{ctrl+m}表示同时按下ctrl键和m键。
以下是理查德的评论。下面是将文件转换为Unix行尾的简单方法。如果你和我一样,你在Windows记事本中创建了它,然后尝试在Linux中运行它——坏主意。
下载并安装一份记事本+(免费)。
在记事本+中打开脚本文件。
文件菜单->另存为->
另存为类型:Unix script file (*.sh;*.bsh)。
将新的.sh文件复制到Linux系统
最大IT可执行文件:chmod 755 the_script_filename
用:./the_script_filename运行
如果有其他问题,请尝试此链接。
- 在记事本++中还有一个设置,设置默认的行尾,转到:"首选项->新建文档->格式",然后选择Unix。但有一点需要注意:这只是新文件的默认设置,如果在现有文件上检测到其他内容,它就不会更改格式。
- 您可以使用记事本+中的替换功能切换行尾。打开"扩展"搜索模式,在"查找"中输入"
",在"替换"中输入""。单击全部替换!
- 要在记事本中修复,只需右键单击右下角的DOSWindows,然后选择Unix/OSX格式。
你也可以在凯特身上这样做。
打开文件
打开"工具"菜单
展开"行尾"子菜单
选择UNIX
保存文件。
只需在脚本名之前添加sh,就可以使它在我的情况下正常工作。
- 非常感谢您发布此消息。所有这些dos2unix/行尾修复解决方案都不适合我。我最后做了sudo sh ./MyScript.sh来运行它。在Redhat 6/Rhel 6上完成
当您在Windows环境中编写脚本并希望在Unix环境中运行它时,需要注意编码:
dos2unix$文件路径
如果您使用的是textmate或类似程序,请执行save as,然后在编码中选择LF而不是CRLF。