我已经安装了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文件。