Ich führe eine Ruby on Rails-Anwendung aus. In der App habe ich ein Ruby Gem geladen, das den Speicherort einer ausführbaren Datei namens bestimmt pngcrush
. Dies geschieht, indem es den Befehl ausführt which pngcrush
, der zurückgibt /cygdrive/c/Windows/system32/pngcrush
. Wenn das Gem jedoch versucht, den Befehl mithilfe eines Systemaufrufs auszugeben, schlägt dies fehl. Es scheint, dass es die Datei FINDEN, aber nicht ausführen kann, möglicherweise weil sie innerhalb von und nicht `/cygdrive/c/Windows/system32/pngcrush somefile.jpg newfile.jpg`
innerhalb von ausgeführt wird .cmd
bash
d. h., innerhalb cmd
von gebe ich ein: /cygdrive/c/Windows/system32/pngcrush
und bekomme The system cannot find the path specified
. Wenn cmd
ich in eingebe bash
und dann in Bash dasselbe eingebe, funktioniert es. Ich kann das Gem nicht ändern, da es von jemand anderem erstellt wurde.
Antwort1
Ich denke, ein Programm wie Ruby verwendet keine Pfade wie diesen /cygdrive/c/windows/, sondern hätte eher eine eigene Umgebung. Versuchen Sie herauszufinden, was seine Umgebung ist, und versuchen Sie dann, einen anderen Befehl auszuführen und dessen Pfad auszudrucken. Sie sollten verstehen, wie es andere Programme aufruft.
Antwort2
Installieren Sie die Cygwin-Version von pngcrush anstelle oder zusätzlich zur Windows-Version von pngcrush. Die Cygwin-Version sollte ordnungsgemäß funktionieren.