Sto usando, tra le altre cose, bash 4.2.37 su Linux Mint 14.
Quando compio il completamento automatico del nome di una variabile di ambiente digitando Tab, si espande al nome della variabile seguito da uno spazio.
Se il valore della variabile sembra essere un nome di directory, voglio che si espanda al nome della variabile seguito da /
.
Ad esempio, se digito:
$ ls $HOM<tab>
si espande in:
$ ls $HOME _
dove _
segna la posizione del cursore. Il problema è che di solito voglio continuare a digitare il nome di alcuni file o directory nella mia directory home, il che significa che devo digitare backspacee quindi /
.
Quindi voglio che quanto sopra si espanda a:
$ ls $HOME/_
La stessa cosa accade quando ho digitato l'intero nome della variabile; dopo ls $HOME
, tabaggiunge uno spazio e voglio che aggiunga a /
.
(E ovviamente non voglio che aggiunga a /
se il valore della variabile non è un nome di directory.)
C'è un modo in cui posso dire a bash di comportarsi nel modo che preferisco, tramite i comandi bash o aggiornando il mio $HOME/.inputrc
?
Nota: sto specificatamente cercando un modo per tabcomportarmi come voglio. Modi per ottenere lo stesso comportamento con tasti diversi sarebbero interessanti, ma non risponderebbero alla mia domanda.
(Ho disabilitato /etc/profile.d/bash_completion.sh
il mio sistema perché interagisce male con set -o nounset
. Un rapido esperimento indica che questo probabilmente non è rilevante per la mia domanda.)
Per inciso, tcsh fa questo: data una variabile d'ambiente $FOOBAR
, digitando si $FOOBA<tab>
espande $FOOBAR/
se si riferisce a una directory, $FOOBAR
(con uno spazio) se non lo fa. No, non è abbastanza per convincermi a tornare a tcsh. zsh fa anche questo.