/bin/sh^M: 坏的解释器: 没有那个文件或目录

21
当我在终端中输入brew doctor(或任何brew命令)时,我会得到以下响应:

-bash:/usr/local/bin/brew: /bin/sh^M: bad interpreter: No such file or directory

我以前见过^M的响应,并且我认为它与dos换行符有关。有没有办法解决这个问题?

2
这种情况发生在我身上,后来我找到了原因。我将我的.gitconfig从Windows机器复制过来,在安装brew之前没有将core.autocrlf更改为input。真是个大失误!我认为Javier Roca的解决方案是最好的。 - Kevin Pauli
1
可能是[./configure : /bin/sh^M : bad interpreter]的重复问题(https://dev59.com/x3E85IYBdhLWcg3wJQCt)。 - mklement0
可能是重复的问题:Bash脚本:坏的解释器 - jww
3个回答

40

这对我有用:

  1. 使用vi打开文件 /usr/local/bin/brew (vi /usr/local/bin/brew)
  2. 在vi中输入以下命令(通过ESC或:) :set fileformat=unix
  3. 通过 :wq! 命令关闭vi文件

现在brew命令应该可以正常使用了。

祝好。


1
这个问题让我发疯了,但是这个解决方案非常好用,谢谢! - wasatz
太棒了,而且更简单 :-) - senseiwu

36
我不知道为什么回车符会出现在你的brew文件中,但是你可以使用dos2unix或通过将其传递到tr -d'\r'来删除它们。

例如:

tr -d '\r'  < /usr/local/bin/brew   > myfixedbrew

验证通过后,您可以使用

mv myfixedbrew /usr/local/bin/brew && chmod a+x /usr/local/bin/brew 

替换旧的。


我该如何使用tr -d '\r'?我应该先cd到/usr/local/bin,然后在brew文件上使用它吗? - user740858
1
@mah 我需要使用brew来安装dos2unix吗? - user740858
抱歉,我没有意识到在OS X上没有安装dos2unix。 - mah
@TheWaller 我忘了提到你需要在文件上重新添加执行权限。 - that other guy
谢谢,终于我能安装brew了。 - Carlos Goce
显示剩余6条评论

2

对于使用Intellij的用户,打开您项目中的gradlew文件。在IDE的右下角会有一个元素写着CRLFLFCR。将其更改为LF,然后它就可以工作了。(我使用Windows+WSL)


你能否澄清一下你的回答?似乎有一个错误——LR不是有效的行尾。谢谢! - kiloton
2
嗯,我认为这是一个打字错误。将答案更新为“LF”。谢谢! - Tonsic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接