Я запускаю приложение 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 вместо или в дополнение к версии pngcrush для Windows. Версия cygwin должна работать правильно.