español - Expansión de la variable Bash en la pestaña completa
if bash (3)
Estoy ejecutando Ubuntu 11.04, y veo un comportamiento extraño cuando trato de usar tab-complete en bash en una ruta que comienza con una variable. Si tengo TOP = / scratch, y trato de completar la pestaña:
cd $ TOP / foo
cambia a
cd / $ TOP / foo
Prefiero que se complete a: cd $ TOP / foobar o cd / scratch / foobar, pero me conformaría con eso, simplemente no cambiando la línea y requiriéndome que elimine el escape de $.
¿Alguien sabe dónde en bash / readline debería buscar para solucionar esto?
El informe de error al que se hace referencia en otras respuestas en https://bugs.launchpad.net/ubuntu/+source/bash/+bug/778627 ofrece una nueva solución al emitir el comando:
shopt -s direxpand
Esto funciona para mi.
Encontré el informe de error, por favor regístrese (si no lo está ya) y agréguese a la lista de "personas afectadas", simplemente lo hice:
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/778627
Soluciones
Intente habilitar direxpand
o cdable_vars
:
shopt -s direxpand
# or
shopt -s cdable_vars
Al parecer, Esc Tab podría ser una solución :
No he encontrado una solución adecuada para esto, pero hay una solución. El escape de las variables de entorno se puede deshabilitar presionando Esc seguido de la pestaña.
# cd $SO + [Esc] + [Tab] # cd $SOME_DIR
¡Confirma eso como un error! Acabo de confirmar que lo mismo funciona en
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.10
Release: 10.10
Codename: maverick
Me sale mal comportamiento en (actualizado) natty:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 11.04
Release: 11.04
Codename: natty
Aunque debo agregar que no se escapó la barra, pero la ruta (si bien es válida, existente, accesible y legible) no se está expandiendo.
Información: https://help.ubuntu.com/community/ReportingBugs
Estaba teniendo un problema similar en el bash cygwin (NT-6.1 2.0.1 2015-04-30) (GNU 4.3.33), especialmente cuando intentaba expandir por tabulaciones una ruta que contenía espacios.
Puse shopt -s direxpand
en mi ~ / .bashrc. Problema resuelto.