【问题标题】:set environment variables for system() in R?在 R 中为 system() 设置环境变量?
【发布时间】:2011-04-22 23:50:09
【问题描述】:

我一直在 Ubuntu 中使用 R 来使用 system() 进行系统调用,例如启动 Amazon EC2 实例、管理 S3 上的文件等。如果我从命令行启动 R,一切正常。但是,如果我从使用 Rscript 的脚本或从 ESS 启动 R,我会遇到未设置环境变量的问题。

认为这是一个问题,我没有正确理解在 Ubuntu 中设置环境变量的位置。我认为“正确的地方”(对于“正确”的某些定义)是在 ~/.bashrc 中设置用户环境变量。这是我设置export EC2_HOME=/home/jd/ec2 之类的地方,但是当我从 ESS 执行 R 并进行系统调用时,.bashrc 脚本没有运行。我试过谷歌搜索,我看到很多关于 Ubuntu 环境变量的解释,比如this one。我的下意识反应是尝试上述线程中的每个建议,并在其中一个选项起作用时停止大便。但后来我得到了非标准的设置,这让我后来很生气。

那么我应该如何设置环境变量,以便在 R 中运行 system() 调用时正确设置它们?

【问题讨论】:

    标签: r ubuntu system environment-variables bash


    【解决方案1】:

    您可以尝试使用 Sys.setenv 在 R 本身中设置它们。

    【讨论】:

    • 好吧。我试图通过 Ubuntu 方法做到这一点,但没有意识到有 R 方法。谢谢!
    • 还有RenvironRenviron.site~/.Renviron.
    【解决方案2】:

    我认为你混淆了这个问题。我担心这可能与登录 shell 与非登录 shell 有关。请参阅 bash 手册页以了解细则……过去曾让我发疯。

    也就是说,如果您可以在系统范围内设置环境变量,那么您有几个选择:

    • /etc/environment 是一个非常好的地方,因为如果您使用不同的 shell,它与 shell 无关
    • 对于登录和非登录 shell,获得完全控制权的一种我认为合适的方法是将 my 更改为 ~/.local_bashrc
    • 从和所有的添加. ~/.local_bashrc

      • ~./bashrc
      • ~/.bash_profile
      • ~/.profile`

      等等。

    您可以在采购之前使用 echo Hello from FILE 将 FILE 替换为文件名。这向您展示了从登录开始(例如通过gdm 等)、通过ssh 连接、通过新的xterm 等终端等开始的shell 之间的区别。

    【讨论】:

    • 该死的好技巧,一如既往的德克。我很想开始编辑/etc/environment,但每次我开始在/etc/ 中搞砸一些东西时,我都会听到一个带有德国口音的声音非常轻柔地说“我学得不是很快,是吗?”我有点毛骨悚然,重新考虑离开家庭农场并在大城市追求生活的决定。
    【解决方案3】:

    您可以使用 source 命令强制系统读取您的 .bashrc 文件

    source ~/.bashrc
    

    很多不优雅和丑陋的方式来应用这个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-03
      • 2013-01-29
      • 2015-02-06
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 2019-12-24
      • 2018-07-13
      相关资源
      最近更新 更多