【问题标题】:Running Ruby Script via shell() function通过 shell() 函数运行 Ruby 脚本
【发布时间】:2015-05-20 17:47:18
【问题描述】:

我试图(最终)通过调用 shell() 函数通过 R 执行一个 ruby​​ 脚本。不过,作为第一步,我只是想验证我是否可以通过这个函数调用 ruby​​ 编译器,但我得到了一个错误。这是我的代码:

dir <- shell("ruby -v", intern=TRUE) 

这会引发警告:警告消息:正在运行的命令

'C:\WINDOWS\system32\cmd.exe /c ruby -v' had status 1

“dir”变量为空。我已验证命令“ruby -v”在命令提示符下运行时有效,并且 Ruby 包含在我的系统路径变量中。

【问题讨论】:

  • 我知道你说 Ruby 在你的系统路径变量中,但你能用Sys.getenv("PATH") 验证你在 R 中的 PATH 环境变量中看到 ruby​​ 吗?
  • 你用的是什么外壳?如果在 shell 命令中指定 shell 会发生什么。尝试设置 intern=FALSE, wait=TRUE 看看控制台的输出是什么
  • @cdeterman 谢谢,这就是问题所在。我什至不知道 R 有一个内部路径环境变量。我通过 Sys.setenv() 函数添加了 Ruby /bin 目录,现在我从 shell() 命令获得了 Ruby 版本的正确输出。谢谢!!
  • @NathanCalverley,我将在下面添加答案,以便我们结束这个问题。

标签: ruby r shell


【解决方案1】:

您需要使用Sys.getenv("PATH") 确认ruby 路径在PATH 环境变量内。如果不是,您始终可以按照上面的说明使用Sys.setenv 添加它。

这是一种简单地将 PATH 变量附加到新目录的方法。

Sys.setenv(PATH = paste(Sys.getenv("PATH"), "/my/ruby/dir/bin", sep=":"))

我不知道有一种更简洁的方法可以从 R 中将路径附加到现有环境变量。

【讨论】:

    猜你喜欢
    • 2014-04-02
    • 2011-07-27
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多