bash: el nombre de la variable no se expande al completar la pestaña

bash: el nombre de la variable no se expande al completar la pestaña

En una computadora remota con la versión de bash "3.2.51(1)-release" (SO: SUSE Linux Enterprise Server 11.1 (x86_64)), no pude completar la tabulación habitual con el nombre de la variable. por ejemplo, me gustaría escribir:

echo $OLDPWD/

luego, al final de la barra, puedo presionar "Tab" y el nombre de la variable se expandirá al nombre del directorio anterior (antes del último comando cdo pushd). Esto funciona en mi propia computadora portátil (Debian 7, versión Bash 4.2.37(1)). ¿Por qué en este shell bash de SLES no funcionaría?

De manera similar, si escribo

echo $OLDP

y luego presione "Tab" al final de la "P" allí, bash lo completará para $OLDPWD. Esto tampoco sucedería en SLES 11 bash.

¿Qué variables de control (shopt? set?) que afectan este comportamiento?

Respuesta1

shopt -s direxpandse expandirá echo $HOME/<tab>a echo /home/matt/bash 4.2. En bash 4.1 debería ser el valor predeterminado.

Creo que eso bash-completionrealmente puede estropear las cosas. Siempre desinstalo bash-completiono ejecuto complete -rpara asegurarme de que las reglas de finalización individuales no hagan algo estúpido con las finalizaciones predeterminadas.

Si $OLDPWDrealmente está configurado, entonces echo $OLDP<tab>debería expandirse a echo $OLDPWD. No sé qué impediría que eso sucediera.

Respuesta2

Intente C-x $en lugar de TABsolicitar explícitamente posibles completaciones de variables (no de otra cosa).

Respuesta3

Comprueba la respuesta para urxvt - pestaña expande variables de entornopor Dmitri Alexandrov.

"Se trata de la opción de expansión directa.

$ shopt -s direexpand y $FOO_PATH/

se ampliará con TAB"

información relacionada