Clojure的Emacs CIDER repl - .profile中的环境变量丢失

10

我不知道这是否是Emacs的一般问题,还是clojure/cider特定的问题。无论如何:我该如何传递在shell中工作且当前在我的~/.profile中配置的环境变量。现在,如果我在我的项目中运行“lein repl”,这个功能可以正常工作:

我不知道这是否是Emacs的一般问题,还是clojure/cider特定的问题。无论如何:我该如何传递在shell中工作且当前在我的~/.profile中配置的环境变量。现在,如果我在我的项目中运行“lein repl”,这个功能可以正常工作:

(System/getenv "FOO")
-> "BAR

但是当我在我的项目中运行cider-jack-in时,CIDER repl无法看到这个变量:

(System/getenv "FOO")
-> nil

我正在使用 Emacs 版本 24.4.50 的 GUI(Cocoa)版本。 Cider 版本是 cider-20140718.747。


GUI应用程序在OSX上无法看到您的shell配置设置。我认为这个答案是您需要的(使用launchd.conf而不是.profile,因为您的GUI应用程序不是由加载.profile的shell启动的)。 - noisesmith
我对将此问题标记为上面那个问题的重复问题犹豫不决。@auramo,你觉得呢? - Arthur Ulfeldt
答案非常准确。但问题并没有特别提到GUI应用程序。如果有的话,我会把它视为那个问题的一个特例。 - auramo
1个回答

4
您可以像noisesmith所指出的那样,将环境变量设置为系统范围,这样您就不需要使emacs使用您的.profile设置,或者您可以从命令行启动emacs,以便它从.profile获取设置,如此答案所示。从命令行启动它很好,因为您可以使用不同的设置启动多个emacs,或者从脚本启动它们:
FOO="BAR" /Applications/Emacs.app/Contents/MacOS/Emacs project.clj

我希望你能帮助我翻译以下内容:如何在不改变系统设置的情况下,使用"BAR"这个值启动emacs中的foo。


6
针对一次性环境变量的设置,也可以使用 m-x setenv 进行操作。 - noisesmith
1
是的,请记得在启动Cider之前运行它。 - Arthur Ulfeldt
我想我会在命令行中启动emacs来使用CIDER。谢谢! - auramo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接