【发布时间】:2012-06-15 20:32:26
【问题描述】:
在我的 .bashrc 中,我有一行:
export SETTINGS=/home/user/settings.xml
如果我在 bash 中加载 R,我可以使用 Sys.getenv 函数访问这个变量:
Sys.getenv("SETTINGS")
"/home/user/settings.xml"
如果我在 Emacs (M-x R) 中打开 R,SETTINGS 为空:
Sys.getenv("SETTINGS")
""
我尝试过的:
-
将以下内容添加到 .emacs,基于 How do I make Emacs recognize bash environment variables for compilation?
;; get environment vars from .bashrc (let ((path (shell-command-to-string ". ~/.bashrc; echo -n $SETTINGS"))) (setenv "SETTINGS" path)) -
使用
M-x term在emacs中打开bashecho $SETTINGS # works R Sys.getenv("SETTINGS") #works 如果我从终端打开 emacs,SETTINGS 变量可以按预期使用。从“应用程序”菜单(使用命令
/usr/bin/emacs23 %F或emacs)打开 emacs 不起作用。-
在 bash 与 emacs 中加载 R 时比较
session("env")的输出,但除了 (bash = ) 之外没有什么特别突出的:> INSIDE_EMACS=23.3.1,comint 6d5 < SETTINGS=/home/user/settings.xml 9c8 < SHLVL=1 > SHLVL=0 14a14 > PAGER=cat 16d15 < PAGER=/usr/bin/pager 19d17 < COLORTERM=gnome-terminal 25c23 < WINDOWID=14680069 > DESKTOP_AUTOSTART_ID=1020ce948b944a88113395253627645060000001863000 < TERM=xterm > TERM=dumb
我也可以
- 在 emacs-ess 的 R 中访问 SETTINGS
- 将 SETTINGS 导出到我可以访问的地方?
【问题讨论】:
-
你是如何开始 Emacs 的?如果您启动一个 bash shell(在环境中使用 SETTINGS),然后从那里启动 Emacs,它应该可以工作。事实上,似乎父进程没有这个环境变量(从 Gnome shell 或类似的开始?)。
-
@MatthewLundberg 我更新了我的答案(见第 3 点)。从终端打开作品。从应用程序菜单、Gnome-do 或键盘快捷键调用
/usr/bin/emacs23 %F不会打开。
标签: r bash emacs environment-variables ess