使用 SSH 提交时无法识别 R 命令

R Command not recognized when submitted with SSH

我在远程主机上提交了一个 shell 脚本,该主机又提交了一个 R 脚本,但是错误 R: command not foundRscript: command not found(取决于我是否尝试过 R CMD BATCHRscript)。

我试过通过以下方式提交:

 ssh <remote-host> exec $HOME/test_script.sh

 ssh <remote-host> `sh $HOME/test_script.sh`

脚本 test_script.sh 包含(也已尝试 Rscript):

#!/bin/sh

Rscript --no-save --no-restore $HOME/greetme.R

exit 0

脚本 greetme.R 仅包含 cat("Hello\n")

我感到慌乱的原因是当我登录 remote-host 并使用 sh $HOME/test_script.sh 提交原始脚本时,它按预期运行。

本地和远程主机的系统规格和 R 版本相同:

> R.version
               _                           
platform       x86_64-unknown-linux-gnu    
arch           x86_64                      
os             linux-gnu                   
system         x86_64, linux-gnu           
status                                     
major          3                           
minor          1.0                         
year           2014                        
month          04                          
day            10                          
svn rev        65387                       
language       R                           
version.string R version 3.1.0 (2014-04-10)
nickname       Spring Dance       

为什么 Linux 拒绝识别命令?

我更喜欢使用 R CMD BATCHRscript 的解决方案,但如果有使用 littler%R_TERM% 的已知解决方法,我也想听听它们。

我参考了这个相关问题,以及评论中引用的文档:R.exe, Rcmd.exe, Rscript.exe and Rterm.exe: what's the difference?

编辑解决方案:

正如@merlin2011 所建议的,一旦我在 test_script.sh 中指定了完整路径,一切都会按预期进行:

#!/bin/sh

/opt/R/bin/Rscript --no-save --no-restore $HOME/greetme.R

exit 0

我也通过提供的建议得到了路径:

$ which Rscript
/opt/R/bin/Rscript

您似乎遇到了一个 PATH 问题,当您尝试通过 ssh 运行 命令时,R 不在您的 PATH 上.

如果您在远程主机上指定 RRscript 的完整路径,应该可以解决问题。

如果您不确定完整路径是什么,请尝试登录服务器并运行宁which R获取路径。