10

在 emacs/eshell 中,"echo $PATH" 显示的路径与 $PATH 环境变量不同。

而且我还检查了 eshell 没有读取 .bashrc 或 .profile,我认为这就是路径不同的原因。

  • eshell 启动时会读取什么设置文件?
  • eshell如何设置它的PATH?
  • 如何使 eshell 的 PATH 与环境变量的 PATH 相同?

添加

正如 Jérôme Radix 指出的那样,PATH 取决于我如何启动 Aquamcs。

  • 当我单击按钮启动 Aquamacs 时,它具有不同的 PATH。
  • 当我从命令行运行“aquamacs”时,它具有相同的 PATH。
4

3 回答 3

6
  • eshell 启动时会读取什么设置文件?

启动时不执行设置文件。读取以下文件以定义初始历史记录和最后一个目录:

~/.eshell/history
~/.eshell/lastdir
  • eshell如何设置它的PATH?

在 esh-util.el 中,第 240 行:

(defvar eshell-path-env (getenv "PATH")
  "Content of $PATH.
It might be different from \(getenv \"PATH\"\), when
`default-directory' points to a remote host.")
  • 如何使 eshell 的 PATH 与环境变量的 PATH 相同?

它与 emacs 进程的 PATH 变量相同。我想你在 emacs 之外的 shell 上做一个 echo $PATH 来比较。如果 emacs 和您在 emacs 之外的 shell 之间的 PATH 不同,那是因为 emacs 和您的 shell 不执行相同的启动脚本。

于 2010-09-02T08:43:50.283 回答
5

由于您使用的是 Mac,因此了解 GUI 应用程序(例如未从终端打开时的 Aquamacs)从 获取其环境非常重要~/.MacOSX/environment.plist,因此您可以在那里进行更改。请特别参阅Brian D Foy的这篇文章,了解自动构建此文件的方法。

于 2010-09-06T10:25:32.607 回答
1

根据定义,echo $PATH显示PATH环境变量的值。在 Emacs 中运行的 shell 从正在运行的 Emacs 进程继承PATH环境变量。

<EDIT> 运行的 shelleshell不是像 bash 这样的单独程序,它内置在 Emacs 中。它的定制是通过 Emacs Lisp 完成的。特别是,当 eshell 启动时,它会运行 in 中的函数eshell-mode-hook并将 Lisp 文件加载到eshell-modules-list. </编辑>

看起来您没有PATH在正确的配置文件中进行设置。正确的地方应该是在您的会话开始时完成的事情。这取决于操作系统;如果您对此有疑问,请在Super User上询问,确保说明您的操作系统是什么,如果适用,请说明您的登录 shell、桌面环境等。

于 2010-09-01T23:31:35.473 回答