我发现 elisp(emacs elisp)似乎无法读取 .bashrc,因为 PATH 变量与 .bashrc 中设置的不同,正如我在这里我尝试在 elisp 中使用“source .bashrc”加载 .bashrc,但是当我这样做时,elisp 就退出了。
- elisp 在加载时读取哪些文件?
- 有什么方法可以使用我在 .bashrc 中所做的设置(别名、PATH 等)?
解决方案
Gilles 给了我一个很好的答案,有了 PATH,就取决于我如何启动 Aquamcs。
- 当我单击按钮启动 Aquamacs 时,它有不同的 PATH。
- 当我从命令行运行“aquamacs”时,它具有相同的 PATH。
答案1
别名是 shell 特有的概念,因此 bash 别名不会延续到 eshell。Eshell 有自己的别名系统,在 顶部附近的注释中有记录em-alias.el
。简而言之,您使用alias
命令定义别名,它们会自动存储以供将来的会话使用。语法与 不同bash
,例如,您alias l='ls -l $*'
在 eshell 中编写的内容与alias ls='ls -l'
在 bash 中编写的内容相同。别名定义位于名为 的文件中~/.eshell/alias
,其中"~/.eshell"
的值是eshell-directory-name
。
Eshell 也有一个 shell 函数系统,在 顶部附近的注释中有记录esh-cmd.el
。引用第一段:
每当使用简单名称(例如“ls”)指定命令时,Eshell 将首先查找名称为“eshell/ls”的 Lisp 函数。如果存在,它将优先于可能与名称“ls”匹配的任何其他命令(例如命令别名、外部命令、该名称的 Lisp 函数等)被调用。