设置详细打印不相关的额外行

设置详细打印不相关的额外行

使用set -x导致我的 shell 打印不相关的内容。例如:

$ set -x
++ printf $'%157s\r'
$ echo 'hello'
+ echo hello
hello
++ printf $'%157s\r'

以“++”开头的行是额外的。我怎样才能删除这些多余的线?

答案1

旗帜-x并不是严格意义上的“冗长”, 它是:

shell 应在扩展命令之后和执行命令之前向标准错误写入每个命令的跟踪。

++意味着这行跟踪来自 shell 在考虑您的提示时自己的内部处理。它是大概在你的 : 中发生的事情PROMPT_COMMAND在这种情况下,如果你运行:

PROMPT_COMMAND=
set -x

那么你不应该得到任何额外的输出。

也可能有其他配置导致它 — Bash 有很多提示设置 — 在这种情况下bash -norc应该完全避免它。


也就是说,这本质上是预期的行为:-x实际上是为了调试 shell 脚本,而不是在交互式 shell 中使用。它实际上是为了打印出它运行的每个命令,这就是它在这里所做的 - 有一个额外的命令在打印每个提示时运行。

答案2

额外的输出也可能是由$PS1变量调用的函数产生的。尝试将其设置为最小提示:export PS1='\u@h:\w \$ '

相关内容