Я запускаю cygwin в Windows 7 и у меня проблемы с Rscript. Я хотел бы запустить файл R как сценарий R в каталоге bin, но Rscript, похоже, имеет проблемы с именами путей cygwin. Вот пример файла Rscript.
$ which test.R
/cygdrive/e/Glenn/bin/test.R
$ ls -l /cygdrive/e/Glenn/bin/test.R
-rwxr-xr-x+ 1 Glenn None 36 Jan 6 08:06 /cygdrive/e/Glenn/bin/test.R
$ cat /cygdrive/e/Glenn/bin/test.R
#!/usr/bin/env Rscript
print("hi")
Основная проблема - ошибка при попытке запустить test.R
$ test.R
Fatal error: cannot open file '/cygdrive/e/Glenn/bin/test.R': No such file or directory
При диагностике проблемы я обнаружил, что могу выполнить код с использованием Rscript явно, но не в том случае, если используется путь в стиле cygwin.
$ Rscript /cygdrive/e/Glenn/bin/test.R
Fatal error: cannot open file '/cygdrive/e/Glenn/bin/test.R': No such file or directory
$ Rscript E:/Glenn/bin/test.R
[1] "hi"
$ which Rscript
/cygdrive/c/Program Files/R/R-3.1.2/bin/Rscript
Я хотел бы решить проблему или найти хороший обходной путь.
Поняв проблему лучше благодаря ответу @varro, я написал этот хак:
$ cat ~/bin/myRscript
#!/bin/bash
winpath=$(cygpath -d "$1")
shift
Rscript $winpath "$@"
Затем я переписал test.sh:
$ cat ~/bin/test.R
#!/usr/bin/env myRscript
print("hi")
Это работает, но мне не нравится хак, и я хотел бы более портативное решение.
$ which test.R
/cygdrive/e/Glenn/bin/test.R
$ test.R
[1] "hi"