如何使Emacs识别bash环境变量进行编译?

我正在尝试通过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,但是使用扩展名通常比自己黑客解决方案更好.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...