在我的 .bashrc 中,我有以下行:
export SETTINGS=/home/user/settings.xml
如果我在 bash 中加载 R,我可以使用Sys.getenv
功能:
Sys.getenv("SETTINGS")
"/home/user/settings.xml"
如果我在 Emacs 中打开 R (M-x R),SETTINGS 为空:
Sys.getenv("SETTINGS")
""
我尝试过的:
-
将以下内容添加到 .emacs 中,基于如何让 Emacs 识别 bash 环境变量进行编译? https://stackoverflow.com/questions/9663396/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))
-
在 emacs 中打开 bash 使用M-x term
echo $SETTINGS # works
R
Sys.getenv("SETTINGS") #works
如果我从终端打开 emacs,SETTINGS 变量将按预期可用。从应用程序菜单打开 emacs(使用命令/usr/bin/emacs23 %F
or emacs
)不起作用。
-
比较输出session("env")
在 bash 和 emacs 中加载 R 时,除了 (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 内部访问设置
- 将设置导出到我可以访问的地方?
我不了解R和自定义环境变量,但我将emacs中的PATH变量设置为与我的bashrc中相同的值。我针对您的问题修改了代码,试一试并告诉我它是否有效。
;; set env variable in Emacs
(getenv "SETTINGS")
(setenv "SETTINGS" "/home/user/settings.xml")
原始代码(对于 PATH)是:
;; Emacs has its own path variable
(getenv "PATH")
(setenv "PATH"
(concat
"/usr/local/texlive/2011/bin/x86_64-linux" ":"
(getenv "PATH")))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)