Wie mache ich `set -x` rückgängig?

77

Ich habe das set -xTerminal eingegeben .

Jetzt druckt das Terminal den zuletzt ausgeführten Befehl über meine Ausgabe, also den Befehl

~]$echo "this is what I see"

kehrt zurück

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

Es gibt keine Manpage für set, wie schalte ich set -xaus?

lonewarrior556
quelle
8
setbuiltinDa es sich um einen Shell- Befehl handelt (zumindest in bash), finden Sie die Dokumentation in der man-Seite von bash. Durchsuche die Manpage nach /^ *SHELL BUILTIN COMMANDS, um alles über setund seine Freunde zu lesen !
dg99
4
aber es gibt eine manSeite für set! Es ist Teil des POSIX-Programmierhandbuchs ... Sie sollten diese Serie wirklich haben ... bitte?
mikeserv
8
Geben Sie in Bash ein help set.
200_success
@ lonewarrior556 Wenn Sie eine der Antworten hilfreich finden, können Sie diese bitte kommentieren und / oder als Lösung markieren. Wir nehmen uns Zeit, um zu helfen ...
Simply_Me

Antworten:

77

Verwenden Sie set +x. Mehr Informationen:

$ type set
set is a special shell builtin

Da setes sich um eine eingebaute Shell handelt, wird dies in der Dokumentation Ihrer Shell dokumentiert.

Beachten Sie, dass einige Systeme Manpages für Shell-Builtins haben, diese Manpages jedoch nur dann korrekt sind, wenn Sie die Standard-Shell verwenden. Unter Linux verfügen Sie möglicherweise über Manpages mit POSIX-Befehlen, die für Shell-Built-Ins angezeigt werden, da es keine Manpage eines eigenständigen Dienstprogramms gibt, mit dem sie gespiegelt werden können. Diese Manpages sind für alle Shells im Bourne-Stil (dash, bash, * ksh und sogar zsh) korrekt, jedoch in der Regel unvollständig.

Tipps zur Suche nach einem in eine lange Shell-Manpage eingebauten Element finden Sie unter Lesen und Durchsuchen langer Manpages .

In diesem Fall ist die Antwort für alle Bourne-Shells gleich. Wenn eine Option aktiviert ist, wird sie deaktiviert. Somit werden Spuren ausgeschaltet. Der letzte gelesene Trace ist unvermeidlich (außer wenn die Shell beendet wird - manchmal können Sie eine Subshell verwenden ).set -LETTERset +LETTERset +xset +x(set -x; command to trace; other command to trace); command that is not traced

Gilles
quelle
4
Dies ist eine gute Antwort, aber es hätte mir ein paar Minuten gespart, wenn Sie das grundlegende "set + x" am Anfang anstatt im letzten Absatz eingebettet hätten. (Ich fand das zusätzliche Detail hilfreich.)
DA
2
{ set +x ;} 2> /dev/nullverbirgt den set +xTrace (funktioniert aber in der Bourne-Shell nicht). Einige Shells geben immer noch ein " + 2> /dev/nullobwohl" aus.
Stéphane Chazelas
51

Sie können den Debugging-Modus beenden, indem Sie auf klicken set +x. Siehe Beispiel Seite

Einfach ich
quelle
18

Sie haben den Debug-Modus aktiviert und müssen ihn deaktivieren.

Auszug aus dem Formular help set:

Wenn Sie + anstelle von - verwenden, werden diese Flags deaktiviert.

Also tippe set +x

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

Sie können eine Manpage nicht finden set, wie Sie unten sehen:

$ type set

setist eine spezielle Shell eingebaut. Obwohl dies auf der Manpage für Ihre Shell dokumentiert ist, können Sie mit beiden auch eine spezifische Dokumentation erhalten

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

Die Handbuchseite zu bash oder sh ist eine gute Lektüre, aber es ist etwas lang, sie zu klären. Die effektiven Informationen, die Sie zum Deaktivieren benötigen, -xbefinden sich am Ende vor Exit Status:und lauten:

Wenn Sie + anstelle von - verwenden, werden diese Flags deaktiviert. Die Flags können auch beim Aufruf der Shell verwendet werden. Der aktuelle Satz von Flags befindet sich in $ -. Die verbleibenden n ARGs sind Positionsparameter und werden der Reihe nach $ 1, $ 2, .. $ n zugewiesen. Wenn keine ARGs angegeben sind, werden alle Shell-Variablen gedruckt.

dlamblin
quelle
Was haben Sie, obwohl nicht falsch, über die bestehenden Antworten hinaus hinzugefügt?
Jeff Schaller
@ JeffSchaller Es ist für Direktheit und Kürze bearbeitet. Als ich diese Antwort brauchte, musste ich die ganze Seite lesen, um die richtige Antwort herauszufinden. Tatsächlich gab ich es auf, die akzeptierte Antwort zu help setlesen, und ging einfach hin und las sie. Ich habe versucht, die akzeptierte Antwort zu verbessern. unix.stackexchange.com/revisions/149137/4 Es wurde akzeptiert, aber dann abgelehnt. Wie ein Nachrichtenartikel beginnt er mit den wichtigsten Informationen und geht davon aus, dass der Leser an jedem Punkt aufhören kann, wobei jeder nächste Satz und Absatz weniger wichtig ist als das Verfahren. Es ist mein SO-Stil unter Unix.
Dlamblin