2010-10-08 56 views
5

我一直在Ubuntu中使用R來使用system()來進行系統調用,例如啓動Amazon EC2實例,管理S3上的文件等。如果我從命令行啓動R,那麼一切正常。但是,如果我使用Rscript或ESS從腳本啓動R,則在設置環境變量時遇到問題。在R中爲system()設置環境變量?

認爲這是一個問題,我沒有正確地grokking在Ubuntu設置環境變量。我認爲「正確的地方」(對於「右」的一些定義)是在〜/ .bashrc中設置用戶環境變量。這是我設置的東西,如export EC2_HOME=/home/jd/ec2,但是當我從ESS執行R並進行系統調用時,不會運行.bashrc腳本。我嘗試過使用Googing,並且在Ubuntu中看到許多對環境變量的解釋,例如this one。我的膝蓋混亂反應是嘗試上述線程中的每個建議,並在其中一個選項有效時立即停止提供一個垃圾。但後來我終於遇到了一些非標準的設置,這些設置後來讓我陷入了屁股。

那麼我應該如何設置環境變量,以便在R中運行system()調用時正確設置?

+0

炒鍋,感謝您對標籤的幫助! – 2010-10-08 16:47:17

回答

6

我認爲你是混亂的問題看你的.bashrc文件。我擔心這可能是關於登錄shell與非登錄shell的關係。細節請參閱bash手冊頁......這在過去使我瘋狂。

也就是說,如果你可以設置環境變量系統範圍內,你有幾種選擇:

  • /etc/environment是一個非常好的地方,因爲它是殼無關,你應該永遠使用不同的外殼
  • 的登錄與非登錄shell,得到完全控制,我找到了適合的方法之一是把變成像~/.local_bashrc
  • 從添加. ~/.local_bashrc和所有的

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

    等頁。

你可以先用echo Hello from FILE採購,你的名稱替換文件的文件。這顯示了從登錄開始(例如通過gdm等),通過ssh連接,通過新的xterm等終端等的shell之間的區別。

+2

該死的好技巧,一如既往的德克。我很想開始編輯'/ etc/environment',但是每當我開始在'/ etc /'中搞一些東西時,我聽到一個德語重音的聲音很溫和地說'學得不快,是嗎?'而且我有點cree然心動,重新考慮離開家庭農場並在大城市追求生活的決定。 – 2010-10-08 17:17:13

10

您可以嘗試使用Sys.setenv將它們設置在R本身中。

+0

好吧。我試圖通過Ubuntu的方法來做到這一點,並沒有意識到有一種R方法。謝謝! – 2010-10-08 16:53:16

+0

和'Renviron'。 'Renviron.site'和'〜/ .Renviron'。 – 2015-11-24 18:16:21

0

您可以強制系統使用source命令

source ~/.bashrc 

大量的不雅和醜陋的方式來應用此