我正在尝试通过Emacs的编译模式编译u-boot,而且看起来Emacs不知道如何找到bash环境变量.即使我设置它们,并且可以通过Emacs
shell仿真进行编译,编译模式仍然尝试编译,就像它们不在那里一样.
我需要做些什么来使其更加环保意识?
您可以尝试添加类似于.emacs的内容:
(let ((path (shell-command-to-string ". ~/.bashrc; echo -n $PATH"))) (setenv "PATH" path) (setq exec-path (append (split-string-and-unquote path ":") exec-path)))
根据您是否设置了.bash_profile或.bashrc中的env变量,您可能需要稍微调整此片段.该例子是PATH变量,这是一个更特别的(因为你必须在Emacs中设置exec-path),但可以扩展为任意变量的工作 – 你可以有一个变量的列表必须是从.bashrc读取并设置为Emacs.
我不知道你是否使用OS X或GNU / Linux.从Linux的GUI菜单栏启动Emacs通常会导致Emacs没有与从命令行启动的路径相同的路径.这个问题可追溯到第一个xdm Xsession脚本,而且它们相当容易修复(基本上使用一个执行exec $SHELL -c Xsession的Xsessionwrapper脚本,以便shell在运行用户的Xsession之前运行),没有人会打扰所以在很长一段时间(我怀疑任何人会).据我所知,问题出现在中等xdm后代,比如kdm和gdm.
在OS X上,处理env变量是另一个问题,为了获得ENV变量,您通常必须从命令行运行Emacs,如/Applications/Emacs.app/Contents/MacOS/Emacs或使用〜/ .MacOSX /environment.plist.我提供的代码段在两种情况下都应该覆盖你.
更新
最近这个过程更容易被exec-path-from-shell扩展.它以大致相同的方式设置emacs $PATH,但是使用扩展名通常比自己黑客解决方案更好.