首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在emacs中获取我的.zshrc?

如何在emacs中获取我的.zshrc?
EN

Stack Overflow用户
提问于 2012-02-25 01:12:10
回答 5查看 5.8K关注 0票数 4

当我启动emacs GUI时,不会根据我的.zshrc设置路径。如何获取我的.zshrc以正确设置它?

编辑:我正在尝试使用swank-clojure,但它找不到lein,因为它不在PATH上。

EN

回答 5

Stack Overflow用户

发布于 2012-02-25 05:19:44

被编辑为add (2014):现在有一个名为exec-path-from-shellpackage in MELPA,它解决了这个问题。(另请参阅Github repository)。几乎可以肯定的是,安装该包比复制和粘贴此代码片段要好得多。除了得到适当的维护外,它还支持从shell设置中复制其他环境变量,因此从Emacs启动的任何子进程都将按预期工作。

原始答案: Emacs这里是我对这个问题的解决方法,它不需要总是从shell启动Emacs(在我的上有时我也会被这个问题困扰):

代码语言:javascript
复制
(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

票数 12
EN

Stack Overflow用户

发布于 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能解决这个问题;

票数 4
EN

Stack Overflow用户

发布于 2012-02-26 02:53:18

Mac有一个special environment file,允许为特定用户启动的进程设置环境变量。这允许您为GUI应用程序设置环境变量。在您的例子中,您可以使用它来设置通过单击dock或finder中的图标启动的任何emacs的路径。

此文件位于

代码语言:javascript
复制
~/.MacOSX/environment.plist

您可以在XCode中创建文件,但它只是纯xml,因此文件的内容如下所示:

代码语言:javascript
复制
<?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>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9435019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档