Bash `sleep`出力__bp_preexec_invoke_exec

Bash `sleep`出力__bp_preexec_invoke_exec

背景

より大きな一行のコマンドを実行しています。予期せず次のように出力されます(繰り返しごとに2回)。

__bp_preexec_invoke_exec "$_"

以下は削除されたコマンドです(ループから他のアクティビティが削除されます)。

for i in `seq 1 3`; do sleep .1 ; done

注:数回試した後、予期しない出力印刷が突然停止しました。

私が試したこと

  • 削除すると、sleep .5予期しない結果が出ません。
  • 実行するとsleep .5プロンプトが返されますが、出力はありません。
  • Googleをやってみました__bp_preexec_invoke_execが、私がやっていることにどのように当てはまるのかわかりません。

質問

何ですか__bp_preexec_invoke_exec "$_"?

不要な出力を生成せずにどのように実行できますか?


@gina2xのおかげで、ソリューションに関する追加情報:

これが出力ですdeclare -f | grep preexec

    preexec_functions+=(preexec);
    __bp_preexec_interactive_mode="on"
__bp_preexec_invoke_exec ()
    if [[ -z "$__bp_preexec_interactive_mode" ]]; then
            __bp_preexec_interactive_mode="";
        __bp_preexec_interactive_mode="";
    local preexec_function;
    local preexec_ret_value=0;
    for preexec_function in "${preexec_functions[@]}";
        if type -t "$preexec_function" > /dev/null; then
            $preexec_function "$this_command";
            preexec_ret_value="$?";
    __bp_set_ret_value "$preexec_ret_value" "$__bp_last_argument_prev_command"
    if [[ -z "${iterm2_ran_preexec:-}" ]]; then
        __iterm2_preexec "";
    iterm2_ran_preexec="";
__iterm2_preexec ()
    iterm2_ran_preexec="yes";

そこに「iterm2」というメッセージがたくさん表示されます(私はMacにあり、iTerm2.appを使用しています)。

実際に Terminal.app を使用して再現しようとすると、次のメッセージが表示されます。再生できない予期しない出力

素晴らしいレビューdeclare -f- ありがとう!

ベストアンサー1

__bp_preexec_invoke_execの一部のようですhttps://github.com/rcaloras/bash-preexec/blob/master/bash-preexec.sh。スクリプトにバグがあるようです。

このプロジェクトはDEBUGトラップを追加し、bashに "preexec"機能を追加します。テストしていませんが、表示されているとおりに機能しない可能性があると想像できます。あなたの環境にインストールされていることを確認してください。次の方法でこれを実行できますdeclare -f。最新のbashでは、このプロジェクトの代わりにPS0を使用できるようです。これは、現在見ている問題なしに同じことを行うことができます。

おすすめ記事