La función de autocompletar bash no parece funcionar con variables de entorno en 11.04. El comportamiento actual se indica a continuación.
export SCRIPT=/home/user/script
cd $SCRIPT/<tab>
resulta en una barra invertida ( \
) que se agrega antes, $SCRIPT
es decir, la solicitud se convierte en
cd \$SCRIPT/
Lo mismo sucede si cd
se sustituye con ls
cualquier otro comando
Además, si hay un archivo ejecutable en la ruta contenida en $ SCRIPT y quiero ejecutarlo
$SCRIPT/<tab>
Bash no muestra las opciones dentro de la carpeta (independientemente de si hay un solo archivo o múltiples archivos / directorios dentro de la ruta contenida en las variables de entorno).
En otras palabras, el autocompletado no funciona con variables de entorno.
11.04
bash
environment-variables
nilchat
fuente
fuente
Respuestas:
Este error se introdujo en bash 4.2. Hay un largo hilo al respecto aquí:
http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html
En resumen, Chet Ramey, el desarrollador de bash, no está seguro de cómo solucionarlo todavía.
fuente
Para recuperar el comportamiento anterior, use el comando
o inclúyelo en tu
.bashrc
Si usa el mismo .bashrc con diferentes versiones de bash, use
fuente
La solución sugerida en http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html es:
<Tab>
para completar automáticamente su variable de entorno st su línea de comando dicecd $MYVAR
<Esc>
+<Ctrl>-E
para expandir la línea de comando actual, es decir, sustituir$MYVAR
por su valor, la ruta/
ay luego disfrute<Tab>
de la finalización automática como siempreEsto supone que está en modo emacs (
set -o emacs
) y que se habash_completion
configurado de manera sensata paracd
(por ejemplocomplete -o nospace -F _cd cd
).Desafortunadamente, esto no funciona en modo vi (
set -o vi
) porque la expansión de línea de comandos no está disponible en ese momento.fuente
Después de escribir la variable de shell
escriba Cntrl-Alt-E. Esto expande la variable
Esto funciona con EDITOR = vi en Fedora 16.
fuente