2013-04-25 105 views
2

我想在每次退出bash时执行一些命令,但无法找到执行此操作的方法。 注销时有〜/ .bash_logout文件,但通常我们使用交互式shell而不是登录shell,所以这对于此目的不是很有用。如何让bash在每次退出时执行脚本?

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

+0

你实际试图解决什么问题? – 2013-04-25 13:56:37

+0

好吧,让我这样说:我想要一个脚本自动执行,然后在终端模拟器中退出bash。 – qed 2013-04-25 13:58:46

+0

陷阱EXIT可能工作。 – 2013-04-25 13:59:23

回答

5

您可以捕捉EXIT信号。

exit_handler() { 
    # code to run on exit 
} 

trap 'exit_handler' EXIT 

Techinically,trap exit_handler EXIT将正常工作。我引用它来强调trap的第一个参数是一个基本上传递给eval的字符串,而不一定是单个函数名称。您可以轻松地写出

trap 'do_this; do_that; if [[ $PICKY == yes ]]; then one_more_thing; fi' EXIT 

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

+0

你的意思是这些应该放在.bashrc中? – qed 2013-04-25 14:22:33

+0

啊,是的,我忘了提到这一点。 – chepner 2013-04-25 15:24:30