当我启动emacs GUI时,根据我的.zshrc不设置PATH.如何获取我的.zshrc来正确设置它?
编辑:我正在尝试使用swank-clojure但它找不到lein因为它不在PATH.
Jon*_* O. 11
编辑添加(2014):现在有一个MELPA命名的包exec-path-from-shell,它解决了这个确切的问题.(另请参阅Github存储库).安装该软件包几乎肯定更好,而不是复制和粘贴此代码段.除了正确维护之外,它还支持从shell设置中复制其他环境变量,因此从Emacs启动的任何子进程都将按预期工作.
原始答案: 这是我解决这个问题的方法,它不需要总是从shell启动Emacs(我有时也会在我的mac上烦恼):
(let ((path (shell-command-to-string ". ~/.zshrc; echo -n $PATH")))
(setenv "PATH" path)
(setq exec-path
(append
(split-string-and-unquote path ":")
exec-path)))
Run Code Online (Sandbox Code Playgroud)
它设置了Emacs对PATH环境变量的想法(因此它将由子shell继承)和Lisp变量exec-path,它用于从Lisp代码中查找可执行文件并用于某些自动完成目的.您可能还需要检查shell-file-name是否根据zsh二进制文件的位置而不是默认值进行了自定义/bin/bash.
这个答案是为后来发现这个问题并由于 Mac 上的 Emacs 默认行为而遇到此问题的人提供的,
如果您使用的是 Mac,并且想知道如何让 emacs 从 shell 启动,它将以图形模式而不是文本模式获取您的自定义 ENV,然后从 zsh 启动它,如下所示:
/Applications/Emacs.app/Contents/MacOS/Emacs
Run Code Online (Sandbox Code Playgroud)
这应该会导致 emacs 看到您所有的 shell(zsh 或其他)自定义。
| 归档时间: |
|
| 查看次数: |
4090 次 |
| 最近记录: |