当我启动emacs GUI时,不会根据我的.zshrc设置路径。如何获取我的.zshrc以正确设置它?
编辑:我正在尝试使用swank-clojure,但它找不到lein,因为它不在PATH上。
发布于 2012-02-25 05:19:44
被编辑为add (2014):现在有一个名为exec-path-from-shell的package in MELPA,它解决了这个问题。(另请参阅Github repository)。几乎可以肯定的是,安装该包比复制和粘贴此代码片段要好得多。除了得到适当的维护外,它还支持从shell设置中复制其他环境变量,因此从Emacs启动的任何子进程都将按预期工作。
原始答案: Emacs这里是我对这个问题的解决方法,它不需要总是从shell启动Emacs(在我的上有时我也会被这个问题困扰):
(let ((path (shell-command-to-string ". ~/.zshrc; echo -n $PATH")))
(setenv "PATH" path)
(setq exec-path
(append
(split-string-and-unquote path ":")
exec-path)))它既设置了Emacs的PATH环境变量(因此它将被subshell继承),也设置了Lisp变量exec-path,后者用于从Lisp代码中查找可执行文件以及用于某些自动完成目的。您可能还需要检查是否将shell-file-name定制为zsh二进制文件的位置,而不是默认的/bin/bash。
发布于 2012-02-25 13:22:46
FWIW,这个问题并不是Mac OS X所特有的,因为它也影响GNU/Linux系统,在GNU/Linux系统中,从GUI的菜单栏启动Emacs通常会导致Emacs与从命令行启动的Emacs的路径不同。这个问题可以追溯到第一个“`xdm”Xsession脚本,虽然它们很容易修复(基本上使用执行"exec $SHELL -c Xsession“的Xsessionwrapper脚本,这样外壳就会在运行用户的Xsession之前运行),但20年后的今天,我们仍然遭受着同样的老问题。不知何故,我并不指望gdm3能解决这个问题;
发布于 2012-02-26 02:53:18
Mac有一个special environment file,允许为特定用户启动的进程设置环境变量。这允许您为GUI应用程序设置环境变量。在您的例子中,您可以使用它来设置通过单击dock或finder中的图标启动的任何emacs的路径。
此文件位于
~/.MacOSX/environment.plist您可以在XCode中创建文件,但它只是纯xml,因此文件的内容如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PATH</key>
<string>~/bin:/usr/local/bin:/usr/local/sbin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:</string>
</dict>
</plist>https://stackoverflow.com/questions/9435019
复制相似问题