为什么我不能在Windows上直接使用Java执行Cygwin.exe?



我已经安装了cygwin,但似乎无法直接访问任何命令。例如,即使我指定它是绝对路径,下面的过程也无法启动。我知道它已正确安装,因为我可以在文件资源管理器中看到此路径。但是,搜索任何Cygwin文件都不会返回任何奇数的命中。

ProcessBuilder pb = new ProcessBuilder("C:\cygwin64\bin\bash.exe", "-c", "ls");
Process p = pb.start();
java.io.IOException: Cannot run program "‪C:cygwin64binbash.exe" (in directory "C:Userstyea1DocumentsLog Bundleslatest_PRODXIO01"): CreateProcess error=2, The system cannot find the file specified

如果我将Cygwin的垃圾箱添加到Windows路径变量,我可以通过

成功执行" LS"
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "ls");
Process p = pb.start();

我仍然无法直接访问bash.exe。

我不明白这里发生了什么,为什么我不能直接执行bash.exe。

我没有完全回答自己的问题,而是找到了有效的东西。在Windows路径中使用Cygwin bin,我的过程构建器字符串是:

[cmd,/c,c: cygwin64 bin sh.exe,-c,ls]

这似乎在起作用。我正在使用sh.exe而不是bash.exe,以便我可以使用Cygwin的所有bin文件。

最新更新