使用set -x
会导致我的 shell 打印不相关的东西。例如:
$ set -x
++ printf $'%157s\r'
$ echo 'hello'
+ echo hello
hello
++ printf $'%157s\r'
Run Code Online (Sandbox Code Playgroud)
以“++”开头的行是额外的。我怎样才能删除那些多余的行?
该-x
标志并不是严格意义上的“详细”,而是:
\n\n\nshell 应在扩展命令之后和执行命令之前向标准错误写入每个命令的跟踪。
\n
++
意味着这行跟踪来自 shell 在考虑您的提示时自己的内部处理。在这种情况下,如果您PROMPT_COMMAND
运行:
PROMPT_COMMAND=\nset -x\n
Run Code Online (Sandbox Code Playgroud)\n\n那么你不应该得到任何额外的输出。
\n\n可能您还有其他配置导致它 \xe2\x80\x94 Bash 有很多提示设置 \xe2\x80\x94 ,在这种情况下bash -norc
应该完全避免它。
也就是说,这本质上是预期的行为:-x
实际上是为了调试 shell 脚本,而不是在交互式 shell 中使用。它实际上是为了打印出它运行的每个命令,这就是它在这里所做的 - 有一个额外的命令在打印每个提示时运行。