Come annullare `set -x`?


77

Ho digitato il set -xterminale.

Ora il terminale continua a stampare l'ultimo comando eseguito sopra il mio output, quindi il comando

~]$echo "this is what I see"

ritorna

+ echo 'this is what I see'
this is what I see

Non esiste una pagina man per set, come posso set -xdisattivare?


8
setè un builtincomando di shell (almeno in bash lo è), quindi la documentazione si trova nella pagina man di bash. Cerca nella pagina man per /^ *SHELL BUILTIN COMMANDSleggere tutto sete i suoi amici!
dg99

4
ma c'è una manpagina per set! Fa parte della guida dei programmatori POSIX ... Dovresti davvero prendere quella serie ... per favore?
Mikeserv,

8
In Bash, digitare help set.
200_successo

@ lonewarrior556 se trovi utile una risposta, puoi commentare e / o contrassegnare una soluzione. Contribuiamo al nostro tempo per assistere ....
Simply_Me

Risposte:


77

Usa set +x. Maggiori informazioni:

$ type set
set is a special shell builtin

Poiché setè incorporato nella shell, è documentato nella documentazione della shell.

Attenzione che alcuni sistemi hanno pagine man per i builtin della shell, ma queste pagine man sono corrette solo se si utilizza la shell predefinita. Su Linux, potresti avere pagine man che presentano comandi POSIX, che verranno visualizzati per i comandi incorporati della shell perché non esiste una pagina man di un'utilità standalone per ombreggiarli; queste pagine man sono corrette per tutte le shell in stile Bourne (trattino, bash, * ksh e persino zsh) ma in genere incomplete.

Vedere Lettura e ricerca di pagine man lunghe per suggerimenti sulla ricerca di un built-in in una pagina man long shell.

In questo caso, la risposta è la stessa per tutte le shell in stile Bourne. Se si attiva un'opzione, la disattiva. Pertanto, disattiva le tracce. L'ultima traccia che viene letta è inevitabile (tranne lasciando che la shell esca - a volte è possibile usare una sottoshell ).set -LETTERset +LETTERset +xset +x(set -x; command to trace; other command to trace); command that is not traced


4
Questa è una buona risposta, ma mi avrebbe risparmiato un paio di minuti se avessi messo "set + x" di base all'inizio piuttosto che incorporato nell'ultimo paragrafo. (Ho trovato utili i dettagli aggiuntivi.)
DA

2
{ set +x ;} 2> /dev/nullnasconde la set +xtraccia (non funzionerà nella shell Bourne). Alcune shell emettono comunque un + 2> /dev/nullpensiero.
Stéphane Chazelas,


18

Hai attivato la modalità debug, devi disattivarla.

Estrarre il modulo help set:

L'uso di + anziché di - provoca la disattivazione di questi flag.

Quindi digita set +x


1
$ set +x # is the opposite of set -x, and will reverse what you typed.

Non riesci a trovare una pagina man appena sopra set, perché come vedi di seguito:

$ type set

setè una shell integrata. Mentre è documentato nella pagina man della shell, presumendo bash qui, puoi anche ottenere una documentazione specifica con entrambi

$ help set || builtin help set # luckily Bash has builtin help on builtin commands

La pagina di manuale su bash o sh è una buona lettura, ma è un po 'lunga da risolvere. Le informazioni efficaci di cui hai bisogno per annullare la configurazione -xsono alla fine prima Exit Status:e leggono:

L'uso di + anziché di - provoca la disattivazione di questi flag. I flag possono anche essere usati su invocazione della shell. Il set corrente di flag può essere trovato in $ -. I restanti n ARG sono parametri posizionali e sono assegnati, in ordine, a $ 1, $ 2, .. $ n. Se non viene fornito alcun ARG, vengono stampate tutte le variabili della shell.


Sebbene non sia sbagliato, cosa hai aggiunto oltre le risposte esistenti?
Jeff Schaller

@JeffSchaller È stato modificato per immediatezza e brevità. Quando avevo bisogno di questa risposta, dovevo leggere l'intera pagina per trovare la risposta corretta. In effetti ho rinunciato a leggere la risposta accettata e sono andato a help setleggerlo. Ho provato a migliorare la risposta accettata. unix.stackexchange.com/revisions/149137/4 È stato accettato ma poi respinto. Come un articolo di notizie, inizia con le informazioni più importanti e presuppone che in qualsiasi momento il lettore possa fermarsi, con ogni frase e paragrafo successivi meno importanti del procedimento. È il mio stile SO su unix se.
dlamblin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.