如何让bash每次退出时都执行一个脚本?

qed*_*qed 2 bash

我想在每次退出bash时执行一些命令,但找不到办法.当你注销时有一个〜/ .bash_logout文件,但通常我们使用交互式shell而不是登录shell,所以这对于这个目的来说并不是很有用.

有没有办法做到这一点?谢谢!

che*_*ner 5

您可以捕获EXIT信号.

exit_handler () {
  # code to run on exit
}

trap 'exit_handler' EXIT
Run Code Online (Sandbox Code Playgroud)

从技术上讲,trap exit_handler EXIT也会起作用.我引用它来强调第一个参数trap是一个本质上传递给它的字符串eval,而不一定是单个函数名.你可以轻松写

trap 'do_this; do_that; if [[ $PICKY == yes ]]; then one_more_thing; fi' EXIT
Run Code Online (Sandbox Code Playgroud)

而不是将您的代码收集到一个函数中.