Emacs shell缓冲区中可执行文件的Bash完成

Emacs shell缓冲区中可执行文件的Bash完成,shell,emacs,Shell,Emacs,Bash completion对于启动emacs时设置的路径似乎工作正常,但是如果我在emacs shell缓冲区中更改路径,我似乎无法让emacs重新考虑其可能的完成列表 有什么方法可以重新初始化Emacs的完成视图吗 在非emacs shell中,一切都按预期运行,偶尔会抛出hash-r作为良好的度量。假设您在某个点使用completion,则有一个变量exec path用于维护搜索可执行文件的目录列表shell命令完成,默认情况下是shell动态完成功能的一部分,用于搜索这些位置 您可以使

Bash completion对于启动emacs时设置的路径似乎工作正常,但是如果我在emacs shell缓冲区中更改路径,我似乎无法让emacs重新考虑其可能的完成列表

有什么方法可以重新初始化Emacs的完成视图吗


在非emacs shell中,一切都按预期运行,偶尔会抛出hash-r作为良好的度量。

假设您在某个点使用completion,则有一个变量
exec path
用于维护搜索可执行文件的目录列表<代码>shell命令完成,默认情况下是
shell动态完成功能
的一部分,用于搜索这些位置


您可以使用新的位置更新该变量以搜索可执行文件,例如,
(push“exec path)

手动设置exec path提供我期望的完成。是否有一个方便的elisp函数可以根据path环境变量设置exec path?我注意到descripe变量说,将exec path buffer设置为本地是有风险的,但如果在不同的shell缓冲区中有不同的路径,那么这似乎是一种理想的设置,不是吗?我认为这被称为风险,因为当访问缓冲区时,它可能被用来以危险的方式操纵计算机,如果它被设置为一个目录局部变量或其他什么。可能有一个方便的函数,我会浏览
env.el
。通过路径分隔符分割
(getenv“PATH”)
的结果并执行任何操作也相当简单。还有,虽然我从一开始就没用过;我不在Mac上