shell -其中是默认目录和定义的路径



关于shell的配置有两个小问题。我查看了自定义选项,甚至源代码,但都无济于事。也许我应该再仔细看看。

  1. 当我启动Emacs并打开shell时,目录是"~/. Emacs"。d/elpa'而不是我的主目录'~/',这是我所期望的。我不知道这个配置是从哪里来的,也没有找到改变它的方法。

  2. 我在我的。bashrc中更改了$PATH,并根据我的需要定制了Emacs变量'exec-path'。但是,shell不会反映第一个更改,它不知道这个更改,而bash知道。shell是如何获得这些信息的?它与bash在了解该变量的变化方面有何不同?

谢谢你的提示

托尔斯滕

p>

发现一个类似的问题[在这里](http://stackoverflow.com/questions/3621755/what-setup-file-does-eshell-elisp-shell-read-when-it-starts-how-eshell-sets-i)。第二点的答案。是shell不读取。bashrc,因此$PATH必须设置在启动过程中较早读取的文件中。在我的Ubuntu系统
/etc/environment

似乎是Emacs在启动时读取的文件,用于设置$PATH。

shell似乎在当前工作目录中启动,对您来说(在Emacs启动之后)是"~/. Emacs .d/elpa"。您可以使用"M-x cd"手动更改它,但这应该不是必需的。如果你编辑某个文件并从它的缓冲区启动shell, shell将在与该文件相同的目录下启动。

但是如果你真的想启动你的主目录下的每个shell会话,你可以在shell启动前调用一个钩子"cd"

在Q1中已经提到:当shell启动时,它会在当前缓冲区的目录中启动。如果我没记错的话(这不是给定的),在macOS上有一段时间,当Finder启动emacs时(即双击图标),*scratch*的当前缓冲区是根/。现在,当它被finder启动时,*scratch*的当前缓冲区是我的主目录。

对于Q2,您要设置的变量是eshell-path-env。这是一个冒号分隔的路径列表。

我已经使用.dir-locals.el来设置目录特定的变量,所以我计划这样做,但我相信你可以使用启动钩子。

请记住,eshell而不是 bashzshcsh等。它不会读取他们的rc文件,也不会读取/etc/environment等。与comint-mode不同,不是emacs的子进程,而是完全包含在emacs中。

相关内容

  • 没有找到相关文章

最新更新