トラップがアンダースコア変数 $_ を変更しないようにする

トラップがアンダースコア変数 $_ を変更しないようにする

最後のコマンドの実行時間を取得するには、bashrcに次のコードがあります。https://stackoverflow.com/a/1862762

function timer_start {
  timer=${timer:-$SECONDS}
}

function timer_stop {
  timer_show=$(($SECONDS - $timer))
  unset timer
}

trap 'timer_start' DEBUG
PROMPT_COMMAND=timer_stop

PS1='[last: ${timer_show}s][\w]$ '

しかし、実行すると、echo $_最後のコマンド引数の代わりに「timer_start」が表示されます。

$_変数を維持するにはどうすればよいですか?

ベストアンサー1

次のことができます。

trap '__=$_; timer_start; : "$__"' DEBUG

おすすめ記事