無関係な追加行の冗長印刷設定

無関係な追加行の冗長印刷設定

これを使用すると、シェルはset -x関連性のないコンテンツを印刷します。たとえば、

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

「++」で始まる行は追加です。これらの追加行をどのように削除できますか?

答え1

-x厳密に言えば、「詳細」ではありません。、それは:

シェルは、コマンドを拡張した後にコマンドを実行する前に、各コマンドのトレースを標準エラーに書き込む必要があります。

++これは、プロンプトを考慮すると、このトレースラインがシェル自体の内部処理から生じることを意味します。それおそらく以下では何が起こりますか?PROMPT_COMMANDこの場合、以下を実行すると:

PROMPT_COMMAND=
set -x

これにより、追加の出力は発生しません。

これを引き起こす他の設定があるかもしれません。 Bashには多くのプロンプト設定があります。bash -norcこれは完全に避けるべきです。


つまり、これは本質的に予想される動作です。-x実際には、対話型シェルで使用するのではなく、シェルスクリプトをデバッグするためのものです。実際に実行されるすべてのコマンドを印刷するように設計されています。ここで行うことは、すべてのプロンプトを印刷する追加のコマンドの実行です。

答え2

$PS1変数によって呼び出される関数によって追加の出力が生成されることもあります。最小限のプロンプトで設定してください。export PS1='\u@h:\w \$ '

関連情報