別の非常に最小限のアプローチは次のとおりです。
trap 'SECONDS=0' DEBUG
export PS1='your_normal_prompt_here ($SECONDS) # '
これは、最後の単純なコマンドが開始されてからの秒数を示します。コマンドを入力せずに Enter キーを押すだけでは、カウンターはリセットされません。これは、端末で最後に何かを行ってから、端末が起動してからどれくらいの時間が経過したかを確認したい場合に便利です。Red Hat と Ubuntu では問題なく動作します。Cygwin では動作しませんでしたが、これがバグなのか、Windows で Bash を実行しようとしたときの制限なのかはわかりません。
このアプローチの考えられる欠点の 1 つは、SECONDS をリセットし続けることですが、最初のシェル呼び出しからの秒数として SECONDS を保持する必要がある場合は、SECONDS を直接使用する代わりに、PS1 カウンター用に独自の変数を作成できます。別の考えられる欠点は、「999999」などの大きな秒の値は、日 + 時間 + 分 + 秒として表示する方が適切な場合があることですが、次のような単純なフィルターを追加するのは簡単です。
seconds2days() { # convert integer seconds to Ddays,HH:MM:SS
printf "%ddays,%02d:%02d:%02d" $(((($1/60)/60)/24)) \
$(((($1/60)/60)%24)) $((($1/60)%60)) $(($1%60)) |
sed 's/^1days/1day/;s/^0days,\(00:\)*//;s/^0//' ; }
trap 'SECONDS=0' DEBUG
PS1='other_prompt_stuff_here ($(seconds2days $SECONDS)) # '
これは、「999999」を「11days,13:46:39」に変換します。最後の sed は「1days」を「1day」に変更し、「0days,00:」などの先頭の空の値を切り捨てます。好みに合わせて調整してください。