2012-08-10 42 views
0

在Mac上,在environment.plist中定义环境变量将允许您在Emacs.app中使用环境变量。在Linux上,是否有这样的等价物?在Linux中为Emacs访问定义环境变量

我不想使用环境变量在shell或终端仿真器之一,但也为find-file(CX CF),shell-command(C-!)等,我有很多的路径定义为环境在这里会有帮助的变量。例如,查找具有find-file的文件可以是$ WORK/projectname等。

我想最简单的方法就是内.emacs使用setenv,但我有很多这样的变量,这将是更好,如果我能在一个外部文件中定义一次,并有Emacs的在读它。

编辑:对不起,困惑。这个问题特别解决了Emacs访问问题,因为在调用shell,eshell或term之前,〜/ .bashrc中定义的变量不可用于Emacs。

+0

我这么认为,但不幸的是没有提供解决方案... – hatmatrix 2012-08-11 12:40:46

回答

2

为了能够访问您的.bashrc中的变量,您需要从bash shell启动emacs。如果您只是点击一个图标,那么.bashrc不会被读取,您将无法访问您的变量。

如果您绝对无法从bash shell启动emacs,请查找由您的桌面环境加载的init文件。在我的情况下,它是.xsession。我输出的任何变量都可用于emacs。

要访问环境变量,请使用getenv

+1

没错,但是.bashrc看起来并不适合OP的任务。如上所述,建议输出它的shell脚本。否则bash会使用这些设置。 – 2012-08-10 13:00:17

+0

我最终编写了一个shell脚本,使用setenv创建了一个elisp文件(来自.bashrc),并带有一系列变量定义。但是,我会研究.xsession(或.xsessionrc,.xprofile?) - 我认为这正是我最初寻找的内容... – hatmatrix 2012-08-10 14:35:55

1

如果您在〜/ .bashrc中定义了环境变量,则它们在用户shell中可用于所有命令。 正确的语法是:

export VARIABLE="value" 
1

您可以编辑.bashrc在你的主目录,在这里你可以添加自己的别名,定义环境变量并添加自定义脚本路径。

3

这里一个脚本,从LISP越来越$ HOME定义了几个环境变量,通过Emacs的阅读在批处理模式下

http://bazaar.launchpad.net/~python-mode-devs/python-mode/python-mode/view/head:/test/python-mode-tests.sh

例如使用(getenv的 “HOME”)

+0

有趣的 - 所以你实际上在Emacs调用中定义环境变量。这并没有发生在我身上,但我已经生成了一个单独的elisp文件,我读入了我的.emacs文件。 – hatmatrix 2012-08-10 14:33:41