在我第一次使用命名目录之前,它的自动完成功能似乎不起作用,如以下会话所示:
% 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
不带任何参数将打印命名目录哈希表。