阻止cygwin bash在shebang上记录错误

时间:2015-10-19 14:49:14

标签: bash cygwin shebang

在Windows命令提示符下运行cygwin中的bash脚本时,即使脚本正确运行,我也总是在第1行收到错误

C:\ImageMagickWatchFolder>bash .\whitebalance
.\whitebalance: line 1: #!/bin/bash: No such file or directory
... (rest of script output)

whitebalance是脚本的文件名)

我尝试用

替换脚本的第1行
  • #!/cygdrive/c/cygwin64/bash
  • #!bash
  • #!C:\cygwin64\bin\bash
  • #!C:\\cygwin64\\bin\\bash
除其他外,只是完全消除它,一切都无济于事。 (有些人提供No such file or directory,有些则提供command not found)。特别是,第一行为空,它给出了

C:\ImageMagickWatchFolder>bash .\whitebalance
.\whitebalance: line 1: $'\357\273\277': command not found

我也尝试过将行结尾样式从unix切换到windows,但这让事情变得更糟。

到下面的第一条评论:

C:\ImageMagickWatchFolder>head -n 2 whitebalance | cat -A
M-oM-;M-?#!/bin/bash$
coords=""$

2 个答案:

答案 0 :(得分:2)

想出来。我一直在使用UTF-8-BOM编码在Notepad ++中保存脚本。当更改为UTF-8或ANSI时,不再出现错误。

答案 1 :(得分:0)

从这里无法分辨,但这种情况的一种常见方式是因为行结束。确保您的脚本没有\r\n(Windows样式)行结尾。 bash会忽略这些但是shebang仍然无效:它会尝试查找/bin/bash\r,然后失败。