Rscript 无法使用 cygwin 路径找到文件

Rscript cant find file using cygwin path

我在 Windows 7 上 运行ning cygwin,我遇到了 Rscript 问题。 我想 运行 一个 R 文件作为 bin 目录中的 R 脚本,但 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 的回答更好地理解了问题之后,我写了这个 hack:

$ cat ~/bin/myRscript
#!/bin/bash
winpath=$(cygpath -d "")
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"

从"Program Files"下Rscript的位置来看,它不像是Cygwin程序,当然不会理解Cygwin路径。如果您想 运行 在 Cygwin 环境中使用它,您必须安装 R 的 Cygwin 版本,我相信它可以在 Cygwin Ports 下获得。