トラップはHUP / SIGHUPをキャプチャしません。

トラップはHUP / SIGHUPをキャプチャしません。

以下のbash機能があります。

on_ql_trap(){
  echo "foobar" > "$HOME/.quicklock/debug.json"
}

ql_trap(){
  trap on_ql_trap EXIT;
  trap on_ql_trap 0;
  trap on_ql_trap SIGHUP;
  trap on_ql_trap HUP;
}

ql_trapはユーザーによって呼び出されますが、ユーザーが関数を呼び出したbashシェルウィンドウを閉じると、on_ql_trapは呼び出されず、「foobar」は記録されません。

私が考えることができる唯一のことは、trap登録のための正しいプロセスがなかったことです。on_ql_trapプロセスが終了したときに呼び出されることを保証する方法を知っている人はいますか?

答え1

理由はわかりませんが、すべて同じ行に入れるとうまくいくようです。

  trap on_ql_trap EXIT HUP INT QUIT TERM;

関連情報