我一直在尝试编写一些脚本,但我似乎无法理解我遇到的这个错误。
bash:/test.sh: 没有这样的文件或目录
基本上,我想使用带有 -c
和 -l
选项的 bash
来运行脚本 test.sh
:
bash -l -c ~/opt/ct/src/test.sh
但这整行是从与 test.sh
位于同一目录中的 Windows 批处理文件 (.cmd) 调用的。我使用的是 64 位 Cygwin(但我也安装了 MinGW)。我已确保文件路径指向 bash.exe(设置了路径)并且它是正确的,就像 shebang 一样。我还在脚本上做了dos2unix
。
有什么想法吗?仅供引用,我写的那行代码在 Cygwin 中运行得非常好。
最佳答案
我发现了问题。
我知道我很久以前就已经在 Windows Path 变量中添加了 MinGW 的路径。看起来,当我执行 bash
时,它实际上运行的是 MinGW 而不是 Cygwin(使用 which bash.exe
进行验证)。
我删除了 MinGW 的路径,瞧,它起作用了。
这个故事的寓意:永远不要将两个指向两个同名程序的路径放入 Path 变量中!
关于linux - 无法从 Windows 批处理文件运行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31015951/