我一直在Ubuntu中使用R来使用system()进行系统调用,例如启动Amazon EC2实例,管理S3上的文件等.如果我从命令行启动R,一切正常.但是如果我使用Rscript或ESS从脚本启动R,我就会遇到环境变量未设置的问题.
我认为这是一个问题,我没有正确地知道在Ubuntu中设置环境变量的位置.我认为“正确的位置”(对于“右”的某些定义)是在〜/ .bashrc中设置用户环境变量.这是我设置导出EC2_HOME = / home / jd / ec2之类的东西但是当我从ESS执行R并进行系统调用时,没有运行.bashrc脚本.我已经尝试了Googing,我看到许多关于Ubuntu中的环境变量的解释,例如this one.我的膝盖反射是在上述线程中尝试每个推荐并且一旦其中一个选项工作就停止给出一个狗屎.但后来我最终得到了非标准设置,这些设置后来让我陷入困境.
那么我应该如何设置环境变量,以便在R中运行system()调用时正确设置它们?
我认为你混淆了这个问题.我担心这可能与登录shell和非登录shell有关.请参阅bash手册页,了解精美的印刷品……过去曾让我感到疯狂.
也就是说,如果您可以在系统范围内设置环境变量,那么您有以下几种选择:
> / etc / environment是一个非常好的地方,因为如果你使用不同的shell它是shell无关的
>对于登录与非登录shell,获得我认为合适的完全控制的一种方法是将我的更改添加到〜/ .local_bashrc之类的内容中
>添加.来自和/和所有的〜/ .local_bashrc
>〜./ bashrc
>〜/ .bash_profile
>〜/ .profile`
等pp.
您可以在源代码之前使用来自FILE的echo Hello,在其中将FILE替换为文件名.这显示了从登录开始的shell之间的区别(例如通过gdm等),通过ssh连接,通过新的xterm等终端等等.