【问题标题】:Making the PATH and other environment variables available in emacs使 PATH 和其他环境变量在 emacs 中可用
【发布时间】:2013-05-16 14:57:00
【问题描述】:

在 OSX 中使用 emacs 有时会很麻烦。

我使用 Terminal.app 应用程序和 emace shell 进行交换,这两个都使用 bash,并且似乎都可以工作,但是我确实有一个问题,即两者的环境设置不同.

我正在全新安装 OSX Lion 和 emacs 的 emacs 24,并希望 emacs shell 中的环境变量与 osx 下的 Terminal.app 中的环境变量相同。我该如何解决?

【问题讨论】:

  • 你最初是在哪里设置这些变量的?
  • @isturdy:我从来没有真正自己设置它们,我在终端使用苹果的设置,以及 emacs 中的默认设置。我更喜欢 emacs 自动使 emacs shell 匹配默认系统设置
  • 要添加缺少的路径,您是否尝试将类似的内容添加到您的 .emacs 文件中?: (setenv "PATH" (concat (getenv "PATH") ":/usr/texbin")) 和(setq exec-path (append exec-path '("/usr/texbin"))) 如果这适用于您的情况,请告诉我,我会创建一个答案——我也在使用 OSX,我使用以上设置运行 TexLive 相关的东西。

标签: macos emacs terminal environment-variables


【解决方案1】:

截至2019年,exec-path-from-shell只会将PATH传给Emacs,如果你想传所有环境,可以试试:

【讨论】:

    【解决方案2】:

    只需安装很棒的小包exec-path-from-shell 就可以了!它会自动将您的 emacs exec-path 设置为与您的 zsh/bash 配置中的 PATH 相同。

    它还允许您像这样复制其他 shell 变量的值:

    (exec-path-from-shell-copy-env "PYTHONPATH")
    

    【讨论】:

    • Windows 怎么样?我已经预装了 spacemacs 的 exec-path-from-shell,但它无法复制任何内容 - 找不到内部或外部命令“printf”
    【解决方案3】:

    从 Terminal.app(而不是 Finder)中打开 Emacs.app:

    $ emacs
    

    这适用于我使用 Homebrew 中的 Emacs 和 Cocoa (brew install emacs --with-cocoa)。它在 Cocoa GUI 窗口中启动 Emacs.app(使用 emacs -nw 回退到终端 UI)。我在 bash 环境中设置的所有环境变量似乎都是在 Emacs 中设置的。

    我没有用 Emacsformacosx 尝试过这个。我个人更喜欢 Homebrew 的 Emacs,因为我听说 Emacsformacosx 没有使用我使用的某些扩展进行编译,例如 TLS 和 Imagemagick……您可以使用 brew install emacs --with-XXX 使用这些扩展编译 Emacs。

    【讨论】:

    • 如果您只是在终端中键入 emacs,您可能会获得一个旧版本,没有图形支持。如果您想使用 Mac OS X 应用程序,您可以在终端中键入 /Applications/Emacs-25.2.app/Contents/MacOS/Emacs (以适应您的安装)之类的内容,从而完全继承调用 shell 参数。
    【解决方案4】:

    如果您的环境变量是在 ~/.bash_profile 中设置的,请创建一个名为 ~/.emacs_bash 的文件并将以下内容放入其中:

    . ~/.bash_profile
    

    不要忘记该行末尾的换行符,否则它将不会被执行。

    ~/.emacs_bash 会在您从其中运行 bash 时由 emacs 加载,例如使用 M-x shell 或 shell-command 时,因此您可以使用它来设置您想要的任何环境变量。

    【讨论】:

    • 如果你在 Unix 上,我会说使用 '. /etc/profile' 但我不确定 OSX 文件系统是如何被破坏的。
    猜你喜欢
    • 2019-05-15
    • 2012-09-05
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 2013-08-04
    • 2019-09-02
    相关资源
    最近更新 更多