使用 Cygwin 在 Windows 上运行 Shell 脚本

使用 Cygwin 在 Windows 上运行 Shell 脚本

我在使用 Cygwin 在 Windows 上运行 .sh 脚本时遇到了问题。

当我运行该文件时:./build.sh -s srv.txt 我得到:./build.sh: line 1: #!/bin/bash: No such file or directory

你们能帮我看看这是什么意思吗?第一行有注释 :)

谢谢。

答案1

我在 Windows 下运行 cygwin 时遇到了同样的问题。对我来说,这与路径无关。

这与编码有关。我使用的UTF-8BOM(字节顺序标记)。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 文本格式问题)并且是问题的原因,这可能会有所帮助。

相关内容