この環境があるとします。
mkdir -p /tmp/foo/bar/
export TEST=/tmp/foo
箱から出して、$TESTのbash完了は非常に一貫性がありません。目撃者:→
$ cd $TES<Tab> → $ cd $TEST<cursor>
$ cd $TEST<Tab> → $ cd $TEST<cursor>
$ cd $TEST/<Tab> → $ cd $TEST/<cursor>
$ cd $TEST/b<Tab> → $ cd $TEST/b<cursor> # no actual completion!
$ ls $TES<Tab> → $ ls $TES<cursor> # no actual completion!
$ ls $TEST<Tab> → $ ls $TEST<cursor> # same
$ ls $TEST/<Tab> → $ ls /tmp/foo/bar/<cursor> # expands var, annoying!
$ echo $TES<Tab> → $ echo $TEST <cursor> # with a space, annoying!
$ echo $TEST<Tab> → $ echo $TEST <cursor> # same
$ echo $TEST/<Tab> → $ echo /tmp/foo/bar/<cursor> # expands var, annoying!
これを、たとえばtcshが完了を行う方法と比較してください。これは、常にto(ディレクトリ名に展開される場合)またはto(展開されない場合)を完了$TES
し$TEST/
、$TEST
何$TEST
も展開しません。これは、私の傲慢な意見では、正しいことであり、bashはそれを完全に間違っています。
したがって、質問は明白です。bashにTheRightThingを実行させることは可能ですか?その場合、どのように実行しますか?マニュアルを理解しようとしましたが、あまり成功しませんでした。