¿Por qué 'set -x' hace que el terminal vuelque basura?

1

Este problema es bastante molesto y no puedo buscar 'set -x' en Google porque el signo menos tiene otra terminología allí.

En mi MacBookPro, cuando uso 'set -x' para depurar los comandos de bash , recibo lo siguiente cada vez que presiono enter. ¿Alguna idea de cómo detener este vertedero feo? debido a esto, para cada comando que ejecuto, necesito desplazarme hacia atrás dos páginas para encontrar el comando real que estaba ejecutando.

++ update_terminal_cwd
++ local url_path=
++ local i ch hexch LC_CTYPE=C LC_ALL=
++ (( i = 0 ))
++ (( i < 24 ))
++ ch=/
++ [[ / =~ [/._~A-Za-z0-9-] ]]
++ url_path+=/
++ (( ++i ))
++ (( i < 24 ))
++ ch=U
++ [[ U =~ [/._~A-Za-z0-9-] ]]
++ url_path+=U
++ (( ++i ))
++ (( i < 24 ))
++ ch=s
++ [[ s =~ [/._~A-Za-z0-9-] ]]
++ url_path+=s
++ (( ++i ))
++ (( i < 24 ))
++ ch=e
++ [[ e =~ [/._~A-Za-z0-9-] ]]
++ url_path+=e
++ (( ++i ))
++ (( i < 24 ))
++ ch=r
++ [[ r =~ [/._~A-Za-z0-9-] ]]
++ url_path+=r
++ (( ++i ))
++ (( i < 24 ))
++ ch=s
++ [[ s =~ [/._~A-Za-z0-9-] ]]
++ url_path+=s
++ (( ++i ))
++ (( i < 24 ))
++ ch=/
++ [[ / =~ [/._~A-Za-z0-9-] ]]
++ url_path+=/
++ (( ++i ))
++ (( i < 24 ))
++ ch=i
++ [[ i =~ [/._~A-Za-z0-9-] ]]
++ url_path+=i
++ (( ++i ))
++ (( i < 24 ))
++ ch=s
++ [[ s =~ [/._~A-Za-z0-9-] ]]
++ url_path+=s
++ (( ++i ))
++ (( i < 24 ))
++ ch=h
++ [[ h =~ [/._~A-Za-z0-9-] ]]
++ url_path+=h
++ (( ++i ))
++ (( i < 24 ))
++ ch=a
++ [[ a =~ [/._~A-Za-z0-9-] ]]
++ url_path+=a
++ (( ++i ))
++ (( i < 24 ))
++ ch=h
++ [[ h =~ [/._~A-Za-z0-9-] ]]
++ url_path+=h
++ (( ++i ))
++ (( i < 24 ))
++ ch=a
++ [[ a =~ [/._~A-Za-z0-9-] ]]
++ url_path+=a
++ (( ++i ))
++ (( i < 24 ))
++ ch=k
++ [[ k =~ [/._~A-Za-z0-9-] ]]
++ url_path+=k
++ (( ++i ))
++ (( i < 24 ))
++ ch=/
++ [[ / =~ [/._~A-Za-z0-9-] ]]
++ url_path+=/
++ (( ++i ))
++ (( i < 24 ))
++ ch=D
++ [[ D =~ [/._~A-Za-z0-9-] ]]
++ url_path+=D
++ (( ++i ))
++ (( i < 24 ))
++ ch=o
++ [[ o =~ [/._~A-Za-z0-9-] ]]
++ url_path+=o
++ (( ++i ))
++ (( i < 24 ))
++ ch=w
++ [[ w =~ [/._~A-Za-z0-9-] ]]
++ url_path+=w
++ (( ++i ))
++ (( i < 24 ))
++ ch=n
++ [[ n =~ [/._~A-Za-z0-9-] ]]
++ url_path+=n
++ (( ++i ))
++ (( i < 24 ))
++ ch=l
++ [[ l =~ [/._~A-Za-z0-9-] ]]
++ url_path+=l
++ (( ++i ))
++ (( i < 24 ))
++ ch=o
++ [[ o =~ [/._~A-Za-z0-9-] ]]
++ url_path+=o
++ (( ++i ))
++ (( i < 24 ))
++ ch=a
++ [[ a =~ [/._~A-Za-z0-9-] ]]
++ url_path+=a
++ (( ++i ))
++ (( i < 24 ))
++ ch=d
++ [[ d =~ [/._~A-Za-z0-9-] ]]
++ url_path+=d
++ (( ++i ))
++ (( i < 24 ))
++ ch=s
++ [[ s =~ [/._~A-Za-z0-9-] ]]
++ url_path+=s
++ (( ++i ))
++ (( i < 24 ))

¡Gracias!

    
pregunta ishahak 18.05.2016 - 15:59

2 respuestas

2

Lo que está viendo aquí es una elegante secuencia de comandos entre bambalinas que Apple agregó en OS X 10.11 para configurar el título de la ventana de Terminal en función del directorio de trabajo actual. Ya que set -x muestra qué comandos están siendo ejecutados por bash, también termina mostrando todas estas cosas normalmente detrás de escena (con detalles dolorosos). Sin embargo, es bastante fácil desactivarlo:

unset PROMPT_COMMAND

... y luego puedes depurar en paz, pero la barra de título de tu ventana ya no se actualizará. Si ha terminado la depuración y desea volver a habilitar las actualizaciones de la barra de título, simplemente restablezca la variable:

PROMPT_COMMAND=update_terminal_cwd
    
respondido por el Gordon Davisson 18.05.2016 - 18:33
0

El lugar a buscar es el manual de bash

Esto incluye

  

El uso de "+" en lugar de "-" hace que estas opciones se desactiven.

Así que prueba set +x

    
respondido por el Mark 18.05.2016 - 16:04

Lea otras preguntas en las etiquetas