我正在运行一个 Ruby on Rails 应用程序 - 应用程序内部有一个我加载的 Ruby Gem,它可以确定名为 的可执行文件的位置pngcrush
。它执行此操作的方式是运行命令which pngcrush
,然后返回/cygdrive/c/Windows/system32/pngcrush
。但是,当 gem 尝试使用系统调用发出命令时,它会失败。似乎它可以找到文件但不能执行它,也许是因为它是在而不是`/cygdrive/c/Windows/system32/pngcrush somefile.jpg newfile.jpg`
内执行的。cmd
bash
即,cmd
我在 中输入: ,/cygdrive/c/Windows/system32/pngcrush
然后我得到The system cannot find the path specified
。当cmd
我在 中输入bash
,然后在 bash 中输入相同的内容时,它可以正常工作。我无法修改 Gem,因为它是由其他人创作的。
答案1
我认为像 ruby 这样的程序不会采用像这样的路径 /cygdrive/c/windows/,而是会有自己的环境,尝试弄清楚它的环境是什么,然后尝试执行其他命令并打印其路径,您应该了解它是如何调用其他程序的。
答案2
安装 pngcrush 的 cygwin 版本,以替代 Windows 版本的 pngcrush,或作为 pngcrush 的补充。cygwin 版本应该可以正常运行。