【发布时间】:2018-05-06 10:23:01
【问题描述】:
在 Windows 上,如果我启动 c:\msys64\mingw64.exe,它会打开一个 shell,我可以在其中构建我的项目,比如说调用 release bash 脚本(为了简化)。一切正常。
现在,我想直接在mingw64 上执行我的release 脚本,无需交互。
我试过了:
c:\msys64\mingw64.exe /c/the/full/path/release
一个窗口打开和关闭,它不起作用。
我尝试直接使用bash,但似乎环境设置不正确:
> c:\msys64\usr\bin\bash -c ls
/usr/bin/bash: ls: command not found
> c:\msys64\usr\bin\bash -c /bin/ls
... it works ...
所以很明显环境和执行c:\msys64\mingw64.exe然后调用ls时的环境不一样。
如何像在mingw64.exe 启动的shell 中一样执行我的release 脚本?
【问题讨论】:
-
试试这个:
msys2_shell.cmd -mingw64 -c "help |more" -
@KonstantinL 这有帮助,我可以执行我的脚本,但是 1)环境仍然不一样(例如,它没有找到介子,而它在 mingw64 shell 中找到它),以及 2)它会打开一个新窗口。
-
我已经发布了我的答案,但我想澄清一下您的“新窗口”投诉。您想要显示任何窗口吗?如果您的脚本有错误并且您想查看错误是什么,会发生什么?
-
@DavidGrayson 感谢您的长回答,我会仔细阅读。关于没有窗口,我想从另一个程序(例如 jenkins)执行脚本并以编程方式检索其输出(就像我对不使用 msys2 的任何“本机”脚本所做的那样)。
-
您在问题中没有提到这一点。从 Jenkins 运行的命令可能类似于我的答案中的命令,除了您删除
/bin/env之前的所有内容并将/bin/env替换为同一程序的绝对 Windows 样式路径。运行 mintty 可能会阻止您获得输出。