zshシェル(非ログインシェルを含む)を終了するたびにコマンドを実行する方法

zshシェル(非ログインシェルを含む)を終了するたびにコマンドを実行する方法

私はシェルを終了するたびにいくつかの一時ファイルをクリーンアップするコマンドを実行しようとしました。

最初はこれが私のことだと思いましたが、.zlogoutターミナルエミュレータ(Kitten)でシェルを複数開くと実行できないようです。ドキュメントで見つけた内容によると、これはログインシェルでのみ.zlogin機能します.zlogout。私が間違っている場合は修正してください。ターミナルエミュレータで別のタブやウィンドウを開いたときはそうではありません。

非ログインシェルと同等のものは何ですか.zlogout?それとも、非ログインシェルで同様の効果を得るために推奨される方法は何ですか?

答え1

次の機能を追加してください。

function shellExit {
  # Your commands
}

そして罠、例えば

trap shellExit EXIT

存在する.zshrc

答え2

ここに例があります。zshガイド~/.zlogout以下を使用する非ログインシェルのソースTRAPEXIT機能。これがまさにあなたが望むようです。

TRAPEXIT() {
    # commands to run here, e.g. if you 
    # always want to run .zlogout:
    if [[ ! -o login ]]; then
      # don't do this in a login shell
      # because it happens anyway
      . ~/.zlogout
    fi
  }

にこの機能を追加してください~/.zshrc

関連情報