Después de una actualización reciente (Ubuntu 12.04 LTS), la TAB completa en la línea de comando es lenta. Después de ingresar un comando parcial (p evi [TAB]
. Ej. ) O un nombre de archivo parcial (p evince somedocu[TAB]
. Ej. ), El shell, a veces, aunque no siempre, se cuelga durante varios segundos.
Personalmente, preferiría un autocompletado menos potente que uno lento. ¿Hay una solución simple?
Editar: Información adicional relacionada con los comentarios:
RUTA es bastante estándar. ~ / bin tiene algunos scripts de bash
$ echo $PATH /home/USERNAME/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
El número de archivos en el directorio de trabajo es inferior a 100.
- La función de autocompletar era especialmente lenta después de una actividad inusual del disco (actualización del sistema). Es, por lo tanto, posible que releer / usr / bin y otros directorios causó el retraso.
bash
autocomplete
ene
fuente
fuente
Respuestas:
No sé cómo arreglarlo: hay todo tipo de cosas que podrían causar retrasos. Pero puedo ofrecer algunos consejos para investigar.
Solo como una suposición, tal vez hay un directorio en algún lugar de una ruta de búsqueda (
$PATH
o en algún lugar donde bash busca datos de finalización) que está en un sistema de archivos que responde lentamente. Por lo general, los sistemas de archivos remotos son lentos, pero también podría ser un disco duro defectuoso, un controlador FUSE bloqueado, etc.El primer paso para investigar es ejecutar
set -x
para obtener un seguimiento de los comandos que ejecuta el shell para generar las terminaciones. Mira donde se detiene.Si eso no da suficiente información, traiga las armas grandes. Tenga en cuenta el ID de proceso del shell (
echo $$
). En otra terminal, ejecutestrace -f -s9999 -p$$
(o el equivalente de strace si se ejecuta en otro sabor de Unix). Strace enumera las llamadas al sistema realizadas por el proceso. Vea si parece estar accediendo a archivos que no debería, o si el acceso a algunos archivos es lento. Agregar la opción-T
a lastrace
línea de comando hace que muestre el tiempo empleado en cada llamada al sistema.fuente
set -x
, qué comando genial. Muy "modo hacker comprometido"set +x
para volver al modo normal sin depuraciónSi su casilla * nix está configurada como un cliente LDAP, puede tener este problema, incluso si ha iniciado sesión como usuario local.
Información de depuración aburrida: depurando
set-x
, encontré la finalización que colgaba en:Confirmar: Confirmé esto con el
ls ~*
que también colgó. Resulta que mi servidor ldap era lento, ¡pero esto no debería afectar cosas como la finalización de bash y ls!Solución: Ajá, hay un error archivado contra bash-complete + ldap, se solucionará en una versión más nueva y un parche simple si no quieres esperar. La finalización de la pestaña es rápida nuevamente, ¡hurra!
Aquí está el archivo de parche en caso de que el enlace desaparezca. Simplemente está escapando del ~ en las líneas 545 y 547:
Debe salir de la sesión ssh actual y volver a iniciar sesión para que este parche surta efecto.
fuente
Intenta reinstalar bash-complete
Para mí esto está arreglado en Ubuntu 18.04.3 LTS
fuente
Además, algunas personas usan funciones adicionales de autocompletado como Git bash auto complete . La lentitud de finalización de bash puede ser el resultado del mal comportamiento de esas funciones de autocompletar adicionales.
En mi caso, fue Git bash auto complete. Mi clave pública git se había actualizado, por lo que estaba haciendo un intento de autenticación fallido que causaba un bloqueo. Una vez que eliminé el autocompletado, fue rápido nuevamente. Entonces, mi solución fue arreglar mi clave y volver a habilitarla.
fuente