74

I typed set -x in terminal.

Now the terminal keeps printing the last command run on top of my output so the command

~]$echo "this is what I see"

returns

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

There is no man page for set, how do I turn set -x off?

  • 8
    set is a shell builtin command (at least in bash it is), so the documentation is found in bash's man page. Search the man page for /^ *SHELL BUILTIN COMMANDS to read all about set and its friends! – dg99 Aug 7 '14 at 19:25
  • 4
    but there is a man page for set! It is part of the POSIX programmers guide... You should really get that series... please? – mikeserv Aug 7 '14 at 20:55
  • 8
    In Bash, type help set. – 200_success Aug 7 '14 at 22:28
  • @lonewarrior556 if you find any of the answer helpful, can you please comment and/or mark a solution. We contribute our time to assist.... – Simply_Me Aug 8 '14 at 20:39
75

Use set +x. More information:

$ type set
set is a special shell builtin

Since set is a shell builtin, it is documented in the documentation of your shell.

Beware that some systems have man pages for shell builtins, but these man pages are only correct if you're using the default shell. On Linux, you may have man pages that present POSIX commands, which will turn up for shell builtins because there's no man page of a standalone utility to shadow them; these man pages are correct for all Bourne-style shells (dash, bash, *ksh, and even zsh) but typically incomplete.

See Reading and searching long man pages for tips on searching for a builtin in a long shell man page.

In this case, the answer is the same for all Bourne-style shells. If set -LETTER turns on an option, set +LETTER turns it off. Thus, set +x turns off traces. The last trace that reads set +x is unavoidable (except by letting the shell exit — sometimes you can use a subshell (set -x; command to trace; other command to trace); command that is not traced).

  • 3
    This is a good answer, but it would have saved me a couple minutes if you put the basic "set +x" at the start rather than embedded in the last paragraph. (I did find the additional detail helpful.) – D. A. Jan 25 '16 at 19:26
  • 2
    { set +x ;} 2> /dev/null hides the set +x trace (won't work in the Bourne shell though). Some shells still output a + 2> /dev/null though. – Stéphane Chazelas Sep 30 '16 at 6:24
50

You can stop debugging mode by set +x. See example page

17

You have enabled debug mode, you need to turn it off.

Extract form help set:

Using + rather than - causes these flags to be turned off.

So type set +x

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

You can't find a man page just on set, because as you see below:

$ type set

set is a special shell builtin. While documented in the man page for your shell, presuming bash here, you can also get specific documentation with either

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

The manual page on bash or sh is a good read, but it's a little long to sort out. The effective information you needed to un-set your -x is at the end before Exit Status: and reads:

Using + rather than - causes these flags to be turned off. The flags can also be used upon invocation of the shell. The current set of flags may be found in $-. The remaining n ARGs are positional parameters and are assigned, in order, to $1, $2, .. $n. If no ARGs are given, all shell variables are printed.

  • While not wrong, what have you added beyond the existing answers? – Jeff Schaller Mar 26 '18 at 12:50
  • @JeffSchaller It's edited for directness and brevity. When I needed this answer I had to read the whole page to find out the correct answer. In fact I gave up reading the accepted answer and just went to help set and read that. I tried to improve the accepted answer. unix.stackexchange.com/revisions/149137/4 It was accepted but then rejected. Like a news article, it starts with the most important information and assumes that at any point the reader may stop, with each next sentence and paragraph being less important than the proceeding. It's my SO style on unix se. – dlamblin Mar 27 '18 at 7:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.