在我的 .bashrc 中,我有一行:
export SETTINGS=/home/user/settings.xml
如果我在 bash 中加载 R,我可以使用以下Sys.getenv
函数访问此变量:
Sys.getenv("SETTINGS")
"/home/user/settings.xml"
如果我在 Emacs (Mx R) 中打开 R,则 SETTINGS 为空:
Sys.getenv("SETTINGS")
""
我试过的:
根据 如何使 Emacs 识别 bash 环境变量进行编译,将以下内容添加到 .emacs?
;; get environment vars from .bashrc (let ((path (shell-command-to-string ". ~/.bashrc; echo -n $SETTINGS"))) (setenv "SETTINGS" path))
使用在 emacs 中打开 bash
M-x term
echo $SETTINGS # works R Sys.getenv("SETTINGS") #works
如果我从终端打开 emacs,则 SETTINGS 变量可以按预期使用。从“应用程序”菜单(使用命令
/usr/bin/emacs23 %F
或emacs
)打开 emacs 不起作用。比较
session("env")
在 bash 和 emacs 中加载 R 时的输出,但除了 (bash = <, emacs = >) 之外没有什么特别突出的:> 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
- 将设置导出到我可以访问的地方?