¿Cómo depuro las terminaciones de bash?

14

He creado algunas funciones de finalización de bash que parecen funcionar de forma aislada, pero me dan resultados inesperados cuando intento completar la pestaña con ellas.

¿Es posible conectar bashdb, luego intentar tabular algo y pasar a depurar y determinar qué está mal?

Dan Midwood
fuente
2
Solo para agregar mi a centavos: debe usar set -xin bash para depurar sus scripts. Use set +xpara deshabilitar.

Respuestas:

6

set -x

Si está set -xen la sesión interactiva o en el script de autocompletar, (¿casi?) Todos los comandos y sus resultados se imprimirán. Esto incluye el trabajo realizado dentro del script de autocompletado.

Esto se puede silenciar nuevamente con set +x.

-X

Después de expandir cada comando simple, para comando, comando de caso, comando de selección o aritmética para comando, muestre el valor expandido de PS4, seguido del comando y sus argumentos expandidos o la lista de palabras asociadas.

del manual de Bash #The Set Builtin

Christopher Peterson
fuente
2

Simplemente inicie sesión / salga de las funciones de finalización de bash; Como probablemente no sean ciencia espacial, esto debería ser bastante fácil de hacer. Puede ser posible conectar bashdb, pero se siente innecesario ...

Tamara Wijsman
fuente
Conectar bashdb hubiera sido mucho más simple y, espero, más rápido que agregar declaraciones de registro a los scripts. Sin embargo, no sé si es posible, y la falta de respuestas sugeriría que no lo es. Logré resolver mi problema registrando el estado en un archivo como usted sugiere, pero enviar información de registro al terminal no es útil cuando se trabaja con terminaciones.
Dan Midwood el
3
@DanMidwood: use dos terminales (por ejemplo, pantalla + división). En uno, ejecute la finalización, en el segundo, tail -fel registro.
choroba
@ Choroba: Buena. : D
Tamara Wijsman