自动完成命名目录

自动完成命名目录

在我第一次使用命名目录之前,它的自动完成功能似乎不起作用,如以下会话所示:

% setfoo() { foo=/etc; }
% setfoo

% cd ~fo<Tab> # doesn't autocomplete ~foo
% ls ~foo # this works
% cd ~fo<Tab> # now it does autocomplete ~foo

有没有办法从一开始就启用自动补全?

笔记:

  • foo如果我直接在命令行上而不是在函数内设置,这将按预期工作
  • setfoo() { foo=/etc; true ~foo; }也有效,但我正在寻找更合适的解决方案

答案1

您可以使用hash -d显式定义命名目录:

hash -d foo=/etc

注意:这里并没有设置相应的参数:

% hash -d foo=/etc
% echo $foo

% echo ~foo
/etc

hash -d不带任何参数将打印命名目录哈希表。

相关内容