Comment annuler `set -x`?

77

J'ai tapé set -xdans le terminal.

Maintenant, le terminal continue d’imprimer la dernière commande exécutée par-dessus ma sortie afin que la commande

~]$echo "this is what I see"

résultats

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

Il n'y a pas de page de manuel pour set, comment puis-je set -xdésactiver?

lonewarrior556
la source
8
setest une builtincommande shell (du moins dans bash), la documentation se trouve donc dans la page de manuel de bash. Parcourez la page de manuel pour /^ *SHELL BUILTIN COMMANDStout savoir sur setses amis!
dg99
4
mais il y a une manpage pour set! Cela fait partie du guide du programmeur POSIX ... Vous devriez vraiment avoir cette série ... s'il vous plait?
mikeserv
8
Dans Bash, tapez help set.
200_success
@ lonewarrior556 si vous trouvez l’une des réponses utiles, pouvez-vous commenter et / ou marquer une solution? Nous contribuons notre temps pour aider ....
Simply_Me

Réponses:

77

Utilisez set +x. Plus d'information:

$ type set
set is a special shell builtin

Comme il sets'agit d'un shell intégré, il est documenté dans la documentation de votre shell.

Notez que certains systèmes ont des pages de manuel pour les commandes intégrées au shell, mais ces pages ne sont correctes que si vous utilisez le shell par défaut. Sous Linux, vous pouvez avoir des pages de manuel présentant des commandes POSIX, qui apparaîtront pour les commandes intégrées au shell car il n’ya pas de page de manuel d’un utilitaire autonome pour les masquer; Ces pages de manuel sont correctes pour tous les shells Bourne (dash, bash, * ksh et même zsh), mais généralement incomplètes.

Reportez-vous à la section Lecture et recherche de longues pages de manuel pour obtenir des conseils sur la recherche d'une fonction intégrée dans une longue page de manuel shell.

Dans ce cas, la réponse est la même pour tous les coques de style Bourne. Si cette option est activée, désactivez-la. Ainsi, désactive les traces. La dernière trace lue est inévitable (sauf en laissant le shell sortir - vous pouvez parfois utiliser un sous-shell ).set -LETTERset +LETTERset +xset +x(set -x; command to trace; other command to trace); command that is not traced

Gilles, arrête de faire le mal
la source
4
C'est une bonne réponse, mais cela m'aurait épargné quelques minutes si vous mettiez le jeu de base "set + x" au début plutôt que de l'inclure dans le dernier paragraphe. (J'ai trouvé les détails supplémentaires utiles.)
DA
2
{ set +x ;} 2> /dev/nullcache la set +xtrace (cela ne fonctionnera pas dans le shell Bourne cependant). Certains obus produisent encore un effet + 2> /dev/null.
Stéphane Chazelas
51

Vous pouvez arrêter le mode de débogage par set +x. Voir la page d' exemple

Simplement moi
la source
18

Vous avez activé le mode débogage, vous devez le désactiver.

Extrait forme help set:

L'utilisation de + plutôt que de - désactive ces indicateurs.

Alors tapez set +x

ctrl-alt-delor
la source
1
$ set +x # is the opposite of set -x, and will reverse what you typed.

Vous ne pouvez pas trouver une page de manuel simplement setparce que, comme vous voyez ci-dessous:

$ type set

setest une coquille spéciale intégrée. Bien que documenté dans la page de manuel de votre shell, en supposant que bash soit présent, vous pouvez également obtenir une documentation spécifique avec

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

La page de manuel sur bash ou sh est une bonne lecture, mais c'est un peu long à trier. Les informations utiles dont vous aviez besoin pour annuler la configuration -xsont à la fin avant Exit Status:et se lit comme suit:

L'utilisation de + plutôt que de - désactive ces indicateurs. Les drapeaux peuvent également être utilisés lors de l'invocation du shell. L'ensemble actuel de drapeaux peut être trouvé dans $ -. Les n ARG restants sont des paramètres de position et sont affectés, dans l'ordre, à $ 1, $ 2, .. $ n. Si aucun ARG n'est donné, toutes les variables du shell sont imprimées.

Dlamblin
la source
Bien que pas mal, qu'avez-vous ajouté au-delà des réponses existantes?
Jeff Schaller
@JeffSchaller Il a été édité pour la simplicité et la concision. Quand j'avais besoin de cette réponse, je devais lire toute la page pour trouver la bonne réponse. En fait, j'ai abandonné la lecture de la réponse acceptée et je suis simplement allé le help setlire. J'ai essayé d'améliorer la réponse acceptée. unix.stackexchange.com/revisions/149137/4 Il a été accepté mais rejeté. Comme un article de presse, il commence par les informations les plus importantes et suppose que le lecteur peut s’arrêter à tout moment, chaque phrase et paragraphe suivants étant moins important que la procédure. C'est mon style SO sur unix se.
Dlamblin