我正在運行一個 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
安裝 cygwin 版本的 pngcrush 來取代或補充 Windows 版本的 pngcrush。 cygwin 版本應該可以正常運作。