背景
より大きな一行のコマンドを実行しています。予期せず次のように出力されます(繰り返しごとに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を使用できるようです。これは、現在見ている問題なしに同じことを行うことができます。
答え2
既存のノートブックから新しいノートブックにデータを移行する際に問題があります。__bp_preexec_invoke_exec
他のものはファイルで定義され派生されます ~/.iterm2_shell_integration.bash
。
私が知る限り、定義は時代遅れなので、騒音が発生します。最新バージョンをダウンロードするには、以下のリンクの指示に従ってください。 https://iterm2.com/documentation-shell-integration.html