Perché "set -x" fa sì che il terminale esegua il dump della spazzatura

1

Questo problema è abbastanza fastidioso e non posso cercare su Google 'set -x' perché il segno meno ha un'altra terminologia lì.

Nel mio MacBookPro, quando uso 'set -x' per eseguire il debug dei comandi di bash , ricevo quanto segue ogni volta che premo invio. Qualche idea su come fermare questa brutta discarica? per questo motivo, per ogni comando eseguito, ho bisogno di scorrere indietro di due pagine per trovare il comando che stavo correndo.

++ 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 ))

Grazie !!

    
posta ishahak 18.05.2016 - 15:59
fonte

2 risposte

2

Quello che stai vedendo qui è qualche stravagante sceneggiatura dietro le quinte che Apple ha aggiunto in OS X 10.11 per impostare il titolo della finestra di Terminale in base alla directory di lavoro corrente. Poiché set -x mostra quali comandi vengono eseguiti da bash, si rivela anche tutta questa roba normalmente dietro le quinte (con dettagli dolorosi). È abbastanza facile disabilitarlo, però:

unset PROMPT_COMMAND

... e quindi puoi eseguire il debug in tranquillità, ma la barra del titolo della finestra non si aggiornerà più. Se hai finito il debug e vuoi riattivare gli aggiornamenti sulla barra del titolo, resetta la variabile:

PROMPT_COMMAND=update_terminal_cwd
    
risposta data 18.05.2016 - 18:33
fonte
0

Il posto dove guardare è il manuale di bash

Questo include

Using ‘+’ rather than ‘-’ causes these options to be turned off.

Quindi prova set +x

    
risposta data 18.05.2016 - 16:04
fonte

Leggi altre domande sui tag