Estou usando, entre outras coisas, o bash 4.2.37 no Linux Mint 14.
Quando eu preencho automaticamente o nome de uma variável de ambiente digitando Tab, ela se expande para o nome da variável seguida por um espaço.
Se o valor da variável for um nome de diretório, quero que ele se expanda para o nome da variável seguido por /
.
Por exemplo, se eu digitar:
$ ls $HOM<tab>
expande para:
$ ls $HOME _
onde _
marca a localização do cursor. O problema é que, normalmente, desejo continuar digitando o nome de algum arquivo ou diretório no meu diretório pessoal, o que significa que preciso digitar backspacee depois /
.
Então, eu quero que o acima expanda para:
$ ls $HOME/_
O mesmo acontece quando eu digitei o nome inteiro da variável; depois ls $HOME
, tabadiciona um espaço, e eu quero-o para adicionar um /
.
(E é claro que não quero adicionar a /
se o valor da variável não for um nome de diretório.)
Existe alguma maneira de dizer ao bash que se comporte da maneira que eu quero, através dos comandos do bash ou atualizando o meu $HOME/.inputrc
?
Nota: Estou procurando especificamente uma maneira de fazer o tabcomportamento que eu quero. Maneiras de atingir o mesmo comportamento com pressionamentos de tecla diferentes seria interessante, mas não responderia à minha pergunta.
(Desativei /etc/profile.d/bash_completion.sh
meu sistema porque ele interage mal set -o nounset
. Um experimento rápido indica que isso provavelmente não é relevante para minha pergunta.)
Aliás, o tcsh faz isso: dada uma variável de ambiente $FOOBAR
, a digitação se $FOOBA<tab>
expande para $FOOBAR/
se se referir a um diretório, $FOOBAR
(com um espaço) se não. Não, isso não é suficiente para me convencer a voltar ao tcsh. O zsh também faz isso.