В командной строке Windows и Cygwin Bash я могу выполнить следующее без проблем:
cvs login
cvs -Q log -N -rVersion_01_00
Сценарий ruby в том же каталоге содержит следующее:
`cvs login`;
`cvs -Q log -N -rVersion_01_00`;
Когда я выполняю скрипт ruby в командной строке Windows, я получаю следующую ошибку:
cvs log: warning: failed to open /cygdrive/c/Documents and Settings/za100744/.cvspass for reading: No such file or directory
Если я запускаю скрипт в оболочке cygwin bash, я получаю тот же вывод, что и при вводе команд вручную.
Я понятия не имею, что происходит не так. Путь, сгенерированный сценарием Ruby, неверен, так как это путь cygwin, но он работает правильно непосредственно в командной строке. Я использую cvs как часть cygwin:
which cvs
cvs is an external : C:\cygwin\bin\cvs.exe
Ruby - это версия программы установки в один клик:
which ruby
/cygdrive/c/Ruby/bin/ruby
Похоже, что cvs в Ruby не может разрешить / cygdrive / c в c: но работает нормально из командной строки.
Perl дает мне точно такую же проблему.
my $str = "cvs -Q log -N -r$cvs_tag|";
open(CVS_STATUS, $str) or die "\n##ERROR##";