Zsh

每次退出 zsh shell(包括非登錄 shell)時如何執行命令

  • July 11, 2021

每次退出 shell 時,我一直在嘗試執行一個命令來清理我的一些臨時文件。

我最初認為這將是工作,.zlogout但如果我,例如,在我的終端模擬器(小貓)中打開多個 shell,它似乎不會被執行。根據我在文件中找到的內容,.zlogin並且.zlogout僅適用於登錄 shell,如果我錯了,請糾正我,當您只是在終端模擬器中打開不同的選項卡或視窗時,情況並非如此。

非登錄 shell的等價物是.zlogout什麼,或者在非登錄 shell 中實現類似效果的推薦方法是什麼?

此zsh 指南中有一個範例,其中使用該函式~/.zlogout的非登錄 shell 的來源。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.

添加一個功能,如

function shellExit {
 # Your commands
}

連同一個陷阱,例如

trap shellExit EXIT

.zshrc

引用自:https://unix.stackexchange.com/questions/657223