eshell(elisp shell)在启动时读取的设置文件是什么? eshell如何设置其PATH?

时间:2010-09-01 20:07:37

标签: emacs eshell

使用emacs / eshell,“echo $ PATH”显示的路径与$ PATH环境变量的路径不同。

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

  • eshell在启动时会读取哪些设置文件?
  • eshell如何设置其路径?
  • 如何使eshell的PATH与环境变量的PATH相同?

ADDED

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

  • 当我点击按钮启动Aquamacs时,它有不同的路径。
  • 当我从命令行运行'aquamacs'时,它具有相同的路径。

3 个答案:

答案 0 :(得分:6)

  • eshell在启动时会读取哪些设置文件?

启动时未执行任何安装文件。读取以下文件以定义初始历史记录和最后一个目录:

~/.eshell/history
~/.eshell/lastdir
  • eshell如何设置其路径?

在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不同,那是因为emacs和你的shell没有执行相同的启动脚本。

答案 1 :(得分:4)

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

答案 2 :(得分:1)

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

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

看起来您没有在正确的配置文件中设置PATH。正确的地方将是在会议开始时完成的事情。这取决于操作系统;如果您遇到问题,请在Super User上询问,确保说出您的操作系统是什么,如果适用,请指明您的登录shell,桌面环境等。