使用emacs / eshell,“echo $ PATH”显示的路径与$ PATH环境变量的路径不同。
我还检查过eshell没有读取.bashrc或.profile,我认为这就是路径不同的原因。
正如JérômeRadix指出的那样,PATH取决于我如何启动Aquamcs。
答案 0 :(得分:6)
启动时未执行任何安装文件。读取以下文件以定义初始历史记录和最后一个目录:
~/.eshell/history
~/.eshell/lastdir
在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.")
它与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,桌面环境等。