!#/bin/bash:没有那个文件或目录

6

首先,我运行

/bin/bash a.sh

它成功了。

但当我想运行它时

/bin/bash a.sh > a_info.txt

它失败了。

Error: line 1: !#/bin/bash: No such file or directory

看起来不是 '^M' 导致了这个错误。


13
你拼错了 "#!/bin/bash"。 - Wooble
我也曾考虑将其投票关闭为“过于局限”,但仔细一想,这可能对那些调换两个字符的人有所帮助(我知道我也曾经不小心这样做了很多次)。 - chepner
3个回答

21

shebang模式是#!/bin/your_shell,而不是!#/bin/your_shell。只需修正此打字错误即可。


1
当你花了两个小时来调试脚本,结果发现你的 shebang 是错误的! - George Ogden

11

检查文件的编码格式。

如果您出现了这个错误,但没有拼写错“shebang”,请仔细查看文件的编码格式。我在一个编码格式为“UTF8 with BOM”的文件上遇到了这个错误... 我猜BOM(字节顺序标记)导致了问题。将编码格式更改为ASCII即可解决此问题(或者您可以使用“UTF-8 without BOM”,对于只包含ASCII字符的文件来说,两者是相同的)。


那就是我的情况中真正的问题 :) - Matteo Tassinari
1
你刚刚救了我的命!谢谢!! - 一有新人
1
我认为这实际上是Bash中的一个错误。据我所知,Unicode合规性意味着能够处理BOM...我希望Bash是(想要)兼容Unicode的?如果我们可以保留BOM,那将会更好,因为这实际上是一种在文件本身中明确编码文件编码的优秀机制,而不是依赖头/元数据/手动配置/猜测...但是像这样的错误确实让人非常恼火。 - Stijn de Witt

2

"没有这样的文件或目录"错误的另一个可能原因是如果您的shell脚本使用CRLF而不是LF行结束符。


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