如何撤消“set -x”?

如何撤消“set -x”?

set -x在终端输入。

现在终端不断打印在我的输出之上运行的最后一个命令,因此该命令

~]$echo "this is what I see"

回报

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

没有 的手册页set,如何关闭set -x

答案1

使用set +x。更多信息:

$ type set
set is a special shell builtin

由于set是 shell 内置命令,因此它记录在 shell 的文档中。

请注意,某些系统具有 shell 内置命令的手册页,但这些手册页仅在您使用默认 shell 时才正确。在 Linux 上,您可能有提供 POSIX 命令的手册页,这些命令将出现在 shell 内置命令中,因为没有独立实用程序的手册页来隐藏它们;这些手册页对于所有 Bourne 风格的 shell(dash、bash、*ksh 甚至 zsh)都是正确的,但通常不完整。

阅读和搜索长手册页有关在长 shell 手册页中搜索内置函数的提示。

在这种情况下,所有 Bourne 风格的 shell 的答案都是相同的。如果打开某个选项,则将其关闭。因此,关闭痕迹。set -LETTERset +LETTERset +x

对于命令本身来说,最后的跟踪set +x并不是完全可以避免的。您可以使用 抑制它{ set +x; } 2>/dev/null,但在某些 shell 中仍然存在重定向本身的痕迹。您可以通过不运行它并让(子)shell 退出来避免跟踪set +x:如果可以在子 shell 中运行跟踪的命令,您可以使用(set -x; command to trace; other command to trace); command that is not traced.

答案2

您可以通过 停止调试模式set +x。参见示例

答案3

您已启用调试模式,需要将其关闭。

help set从shell的输出中提取bash

使用 + 而不是 - 会导致这些标志被关闭。

所以输入set +x

答案4

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

您无法在 上找到手册页set,因为如下所示:

$ type set

set是一个特殊的内置 shell。虽然在您的 shell 的手册页中有记录,假设这里是 bash,您还可以使用以下任一方法获取特定文档:

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

bash 或 sh 的手册页很好读,但整理起来有点长。取消设置所需的有效信息-x位于前面的末尾Exit Status:,内容如下:

使用 + 而不是 - 会导致这些标志被关闭。这些标志也可以在调用 shell 时使用。当前的标志集可以在 $- 中找到。剩余的 n 个 ARG 是位置参数,并按顺序分配给 $1、$2、.. $n。如果没有给出 ARG,则打印所有 shell 变量。

相关内容