我在使用 Cygwin 在 Windows 上运行 .sh 脚本时遇到了问题。
当我运行该文件时:./build.sh -s srv.txt
我得到:./build.sh: line 1: #!/bin/bash: No such file or directory
你们能帮我看看这是什么意思吗?第一行有注释 :)
谢谢。
答案1
我在 Windows 下运行 cygwin 时遇到了同样的问题。对我来说,这与路径无关。
这与编码有关。我使用的UTF-8
是BOM(字节顺序标记)。BOM 导致它堵塞。一旦我将其移除,它就可以正常工作。
我使用 Notepad++ 更新了编码:
编码 -> 使用 UTF-8 无 BOM 编码
命令which bash
输出:
/usr/bin/bash
但它仍然能够解决
#!/bin/bash
答案2
^M
这通常意味着文件的每一行末尾都有一个回车符,或者存在其他编码问题,导致该#!/bin/bash
行无法正确解释。
复制该文件并使用您选择的编辑器将其保存为纯 ASCII,以删除尽可能多的非 ASCII 编码。此外,如果编辑器支持,请尝试将其保存为“UNIX”格式。
答案3
你试过跑步吗...
sh build.sh
代替...
./build.sh
我不确定(我从未运行过 Cygwin)但看起来这/bin/bash
不是你机器中的路径,所以你的 shebang ( #!/bin/bash
) 会破坏该程序。
如果使用 shebang 运行程序sh
则应将其视为注释。
希望这可以帮助。
答案4
过去,我曾遇到过在 Windows 机器上编写的 Python 脚本中 /M 问题,并尝试在 Linux 机器上使用它们。我使用 dos2unix 转换文件,使它们可以在 Linux 机器上运行。如果存在回车符(或其他 Windows 文本格式问题)并且是问题的原因,这可能会有所帮助。