2008-09-19 47 views
14

En bash, las variables ambientales tabuladores ampliar correctamente cuando se coloca después de un comando echo, por ejemplo:En bash, las variables ambientales no tabuladores expandir correctamente

echo $HOME 

Pero después de cd o un gato, golpe del coloca una \ antes del signo $, así:

cd \$HOME 

Si utilizo una variable como el segundo argumento de un comando, no se expandirá en absoluto:

cp somefile $HOM 

¿Qué misteriosa opción tengo en mi archivo .bashrc o .inputrc que me está causando tanta angustia?

+0

No es una cuestión de programación de scripts –

+4

es la programación! – ColinYounger

+0

Sería muy útil saber qué distribución de Linux o qué variante de Unix está utilizando. – ehdr

Respuesta

4

Trate completa cd-r para eliminar la función de finalización de programación especial que muchas distribuciones de Linux instalan para el comando cd. La función agrega buscar una lista de directorios especificados en la variable CDPATH para completar tabulaciones para cd, pero a costa de romper el comportamiento de finalización predeterminado.

Ver http://www.gnu.org/software/bash/manual/bashref.html#Programmable-Completion para más detalles sangrientos.

3

Para la segunda instancia, puede presionar ESC antes de tabular para resolverlo.

no sé la solución a su problema, pero usted podría mirar en /etc/bash_completion o los archivos bajo /etc/bash_completion.d para determinar lo que manda el uso de autocompletar y cómo.

help complete 

Podría ser útil.

1

The Bash Reference Manual tiene más información que es posible que desee sobre las erratas de expansión.

Section 8.7 parece que sería el lugar para comenzar. Proporciona información sobre la función 'completa', entre otras cosas.

4

Lo que usted describe es una "característica" introduced in bash 4.2. Por lo tanto, no tiene ninguna opción misteriosa que le cause angustia, sino un comportamiento "intencionado".

Esto me parece muy molesto, ya que prefería que la forma en que solía ser, y no he encontrado ninguna opción de configuración sin embargo, para obtener el comportamiento anterior espalda. Jugar con las opciones complete según lo sugerido por otras respuestas no me llevó a ninguna parte.

+3

Esta es la respuesta correcta; lo de autocompletar es arreglar un síntoma, no la causa. Un shopt "direxpand" está en camino a solucionar este problema. – Nelson

0

¡Estoy respondiendo una pregunta de 4 años! ¡Fantástico!

trata de un error bash/característica que se introdujo involuntariamente en v4.2, y fue inadvertido durante un largo período de tiempo. Esto fue señalado por geirha en this tread. Confirmado como característica no deseada here

me encontré con este problema al ejecutar Ubuntu en casa. En el trabajo tengo bash-3.00, así que he pasado un tiempo navegando para ver qué está pasando. Me pregunto si puedo 'degradar' ...

Cuestiones relacionadas