3
行の長さの計算を中断せずにBashのPS1にコマンドを含める方法
Tonin は、デフォルトのプロンプトでバグを指摘しました。最小限の例: PS1を設定します。 PS1='$(exit_code=$?; [[ $exit_code -eq 0 ]] || printf %s $(tput setaf 1) $exit_code $(tput sgr0) " ")$ ' この時点で、プロンプトは次のようになります。 $ 次を実行して、終了コードの出力をトリガーします。 false これで、プロンプトの行頭に赤の終了コードが含まれます。 1 $ Ctrl-を押しrます。 「false」と入力します。これで、プロンプトには検索のみが含まれます。 (reverse-i-search)`false': false を押しEnterます。 結果の端末履歴には、次が含まれます。 1 $ch)`false': false 期待される出力: 1 $ false つまり、履歴検索の出力がプロンプトと混合され、実行された実際のコマンドが隠されているようです。 私はこれを回避するために使用してみましたPROMPT_COMMAND: set_exit_code() { exit_code=$? [[ $exit_code -eq 0 …