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,但沒有太大的成功。
重寫bash的一部分。 –
您可能想嘗試zsh。對於基本用法,您可能會發現與bash沒有區別。 zsh可以很容易地配置來做你想做的事情。 –