Estou usando, entre outras coisas, o bash 4.2.37 no Linux Mint 14.
Quando eu preenchei automaticamente o nome de uma variável de ambiente digitando Tab , ele expandiu para o nome da variável seguido por um espaço.
Se o valor da variável for um nome de diretório, eu quero que ele se expanda para o nome da variável seguido por /
.
Por exemplo, se eu digitar:
$ ls $HOM<tab>
expande-se para:
$ ls $HOME _
em que _
marca a localização do cursor. O problema é que eu geralmente quero continuar digitando o nome de algum arquivo ou diretório sob o meu diretório home, o que significa que eu tenho que digitar backspace e então /
.
Então, eu quero o exemplo acima para expandir para:
$ ls $HOME/_
O mesmo acontece quando eu digito o nome inteiro da variável; depois de ls $HOME
, a aba adiciona um espaço, e eu quero adicionar um /
.
(E é claro que não quero adicionar um /
se o valor da variável não for um nome de diretório.)
Existe alguma maneira que eu possa dizer bash para se comportar da maneira que eu quero, seja através de comandos bash ou atualizando meu $HOME/.inputrc
?
Nota: Estou procurando especificamente uma maneira de fazer com que a guia se comporte como eu quero. Maneiras de atingir o mesmo comportamento com diferentes pressionamentos de tecla seriam interessantes, mas não responderiam à minha pergunta.
(Desativei /etc/profile.d/bash_completion.sh
no meu sistema porque ele interage mal com set -o nounset
. Uma experiência rápida indica que isso provavelmente não é relevante para minha pergunta.)
Aliás, o tcsh faz isto: dada uma variável de ambiente $FOOBAR
, digitar $FOOBA<tab>
expande para $FOOBAR/
se se referir a um diretório, $FOOBAR
(com um espaço) se isso não acontecer. Não, isso não é suficiente para me convencer a voltar ao tcsh. zsh faz isso também.