Estoy usando, entre otras cosas, bash 4.2.37 en Linux Mint 14.
Cuando autocompleto el nombre de una variable de entorno escribiendo Tab, se expande al nombre de la variable seguido de un espacio.
Si el valor de la variable es un nombre de directorio, quiero que se expanda al nombre de la variable seguido de /
.
Por ejemplo, si escribo:
$ ls $HOM<tab>
se expande a:
$ ls $HOME _
donde _
marca la ubicación del cursor. El problema es que normalmente quiero seguir escribiendo el nombre de algún archivo o directorio en mi directorio de inicio, lo que significa que tengo que escribir backspacey luego /
.
Entonces, quiero que lo anterior se expanda a:
$ ls $HOME/_
Lo mismo sucede cuando escribí el nombre completo de la variable; después ls $HOME
, tabagrega un espacio, y quiero que agregue un /
.
(Y, por supuesto, no quiero que agregue un /
si el valor de la variable no es un nombre de directorio).
¿Hay alguna forma de decirle a bash que se comporte de la manera que quiero, ya sea a través de comandos bash o actualizando mi $HOME/.inputrc
?
Nota: Estoy buscando específicamente una forma de hacer que se tabcomporte de la manera que quiero. Las formas de lograr el mismo comportamiento con diferentes teclas serían interesantes, pero no responderían a mi pregunta.
(He desactivado /etc/profile.d/bash_completion.sh
en mi sistema porque interactúa mal con él set -o nounset
. Un experimento rápido indica que esto probablemente no sea relevante para mi pregunta).
Por cierto, tcsh hace esto: dada una variable de entorno $FOOBAR
, la escritura se $FOOBA<tab>
expande $FOOBAR/
si se refiere a un directorio, $FOOBAR
(con un espacio) si no lo hace. No, eso no es suficiente para convencerme de volver a tcsh. zsh hace esto también.