2011-07-13 7 views
2

は、私たちがこのような環境があるとします。ボックスのうち環境変数のより人間的な完了が必要

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は、$TES$TEST/$TESTがディレクトリ名に展開されている場合)または$TEST(完了していない場合)を完了し、何も展開しないことを常に完了しています。それは、私の傲慢な意見では、正しいことです、そして、bashは完全に間違っています。

質問は明らかです。 bashに正しいことをさせることは可能でしょうかもしそうなら、どうですか?私はmanualを理解しようとしましたが、多くの成功はありませんでした。

+5

bashの書き換え部分。 –

+0

zshを試してみてください。基本的な使い方については、おそらくbashとの違いは見当たりません。 zshは、あなたが望むことをするように簡単に設定できます。 –

答えて