Używam między innymi bash 4.2.37 na Linux Mint 14.
Kiedy automatycznie uzupełniam nazwę zmiennej środowiskowej, pisząc Tab, rozwija się ona do nazwy zmiennej, po której następuje spacja.
Jeśli wartością zmiennej jest nazwa katalogu, chcę, aby rozwijała się do nazwy zmiennej, po której następuje /
.
Na przykład, jeśli napiszę:
$ ls $HOM<tab>
rozwija się do:
$ ls $HOME _
gdzie _
oznacza lokalizację kursora. Problem polega na tym, że zwykle chcę kontynuować wpisywanie nazwy jakiegoś pliku lub katalogu w moim katalogu domowym, co oznacza, że muszę wpisać, backspacea następnie /
.
Chcę, aby powyższe rozszerzyło się na:
$ ls $HOME/_
To samo dzieje się, gdy wpisałem całą nazwę zmiennej; po ls $HOME
, tabdodaje spację i chcę, aby dodać /
.
(I oczywiście nie chcę, aby dodawał a, /
jeśli wartość zmiennej nie jest nazwą katalogu).
Czy mogę w jakiś sposób powiedzieć bashowi, aby zachowywał się tak, jak chcę, albo za pomocą poleceń bash, albo poprzez aktualizację mojego $HOME/.inputrc
?
Uwaga: szukam sposobu, aby tabzachować się tak, jak chcę. Sposoby osiągnięcia tego samego zachowania przy różnych naciśnięciach klawiszy byłyby interesujące, ale nie odpowiadałyby na moje pytanie.
(Wyłączyłem /etc/profile.d/bash_completion.sh
system, ponieważ źle współdziała set -o nounset
. Szybki eksperyment wskazuje, że prawdopodobnie nie ma to związku z moim pytaniem).
Nawiasem mówiąc, tcsh robi to: biorąc pod uwagę zmienną środowiskową $FOOBAR
, pisanie $FOOBA<tab>
rozwija się, $FOOBAR/
jeśli odnosi się do katalogu, $FOOBAR
(ze spacją), jeśli nie. Nie, to nie wystarczy, aby przekonać mnie do powrotu do tcsh. Zsh też to robi.