次のセッションに示すように、オートコンプリート機能は、最初に名前付きディレクトリを使用するまで機能しないようです。
% 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
引数がない場合は、名前付きディレクトリハッシュテーブルが印刷されます。