自动完成功能将反斜杠放在 $ 标记前,如何禁用它?(ubuntu 22.04)

自动完成功能将反斜杠放在 $ 标记前,如何禁用它?(ubuntu 22.04)

要从另一个目录访问目录中的文件,我经常为该目录设置一个变量。例如(你可以自己尝试一下),

导出 dir1=/usr/local/bin

然后输入ls $dir1/tab我希望 shell 显示 /usr/local/bin 下的文件,但是tab,字符$\转义为\$dir1,shell 不再理解它$dir1,并且不会将其扩展为 /usr/local/bin ,也不会显示那里的文件。这很烦人(我以前这样做没有问题,但从 ubuntu-22.04 开始是否会发生这种情况?)。有什么方法可以阻止文件名自动完成期间的自动转义?
ps - 我看到了https://lists.gnu.org/archive/html/bug-bash/2011-02/msg00280.html但没有找到答案,只有无关紧要的长篇大论。

答案1

此行为由 shell 选项控制direxpand

直接展开

如果设置,Bash 在执行文件名补全时会用单词扩展的结果替换目录名。这会更改 Readline 编辑缓冲区的内容。如果未设置,Bash 会尝试保留用户输入的内容。

因此请检查您的 shell 中是否设置了该选项 ( shopt direxpand),如果没有,请使用 进行设置shopt -s direxpand

相关内容