Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 无法从Windows批处理文件运行shell脚本_Linux_Windows_Bash_Shell - Fatal编程技术网

Linux 无法从Windows批处理文件运行shell脚本

Linux 无法从Windows批处理文件运行shell脚本,linux,windows,bash,shell,Linux,Windows,Bash,Shell,我一直在尝试编写一些脚本,但我似乎无法理解我的这个错误 bash:/test.sh:没有这样的文件或目录 基本上,我想使用带有-c和-l选项的bash运行一个脚本,test.sh: bash -l -c ~/opt/ct/src/test.sh 但是这整行代码是从一个Windows批处理文件(.cmd)调用的,该文件位于与test.sh相同的目录中。我使用的是64位Cygwin(但我也安装了MinGW)。我已经确保文件路径指向bash.exe(设置了一个路径),并且它是正确的,就像sheban

我一直在尝试编写一些脚本,但我似乎无法理解我的这个错误

bash:/test.sh:没有这样的文件或目录

基本上,我想使用带有
-c
-l
选项的
bash
运行一个脚本,
test.sh

bash -l -c ~/opt/ct/src/test.sh
但是这整行代码是从一个Windows批处理文件(.cmd)调用的,该文件位于与
test.sh
相同的目录中。我使用的是64位Cygwin(但我也安装了MinGW)。我已经确保文件路径指向
bash.exe
(设置了一个路径),并且它是正确的,就像shebang一样。我还对脚本执行了
dos2unix

你知道为什么吗?仅供参考,我写的这句话在Cygwin运行得非常好。

我发现了问题

我知道我很久以前在Windows路径变量中添加了MinGW的路径。似乎当我执行
bash
时,它实际上是从MinGW而不是Cygwin运行的(使用
哪个bash.exe
进行验证)

我移走了通往MinGW的路,瞧,它成功了


这个故事的寓意是:永远不要在路径变量中放置指向两个同名程序的两条路径

test.sh
是否存在于Windows文件系统中的
c:\cygwin\home\%username%\opt\ct\src
中?是的,它确实存在。错误消息很可能指示在根目录中搜索的test.sh的位置错误。也许可以试试Cygwin风格的路径(
/cygdrive/c/…
),看看这是否有帮助,假设bash也是Cygwin的?不,bash是cmd的。虽然我不确定如果我直接从Cygwin调用它会有什么不同。我回滚了你的最新编辑。不要更改问题,而是将您的答案标记为已接受(单击计票下方的友好大复选标记,使其变为绿色);这样,您的问题将不再显示为未解决。(您可能需要等待才能接受自己的答案,尽管我相信您应该已经超过了超时时间。)