在Bash退出之前运行脚本

在Bash退出之前运行脚本,bash,exit,xfce,Bash,Exit,Xfce,我希望每次关闭Bash会话时都运行一个脚本 我使用XFCE和终端0.4.5(XFCE终端仿真器),我希望在每次关闭终端中的选项卡(包括最后一个)时运行脚本(当我关闭终端时) 类似于.bashrc,但在每个会话结束时运行 .bash_注销不起作用如果您使用“退出”关闭会话,可能会出现以下情况 alias endbash=“./runscript;exit”只需输入endbash退出即可。我不完全确定这是否有效,因为我目前正在运行windows 编辑:DVK有一个更好的答案。您使用的是trap(请参

我希望每次关闭Bash会话时都运行一个脚本

我使用XFCE和终端0.4.5(XFCE终端仿真器),我希望在每次关闭终端中的选项卡(包括最后一个)时运行脚本(当我关闭终端时)

类似于.bashrc,但在每个会话结束时运行


.bash_注销不起作用

如果您使用“退出”关闭会话,可能会出现以下情况
alias endbash=“./runscript;exit”
只需输入endbash退出即可。我不完全确定这是否有效,因为我目前正在运行windows

编辑:DVK有一个更好的答案。

您使用的是
trap
(请参见
manbash
):

该命令可以添加到您的
.profile/.login

无论您是正常退出shell(例如,通过
exit
命令)还是简单地关闭终端窗口/选项卡,这都是有效的,因为shell以任何方式获得
exit
信号-我只是通过退出putty窗口进行测试。

在“~/.bash\u logout”中编写脚本。当登录shell退出时,它由bash(1)执行。

我的答案与类似,但您必须使用命令或函数,而不是文件

$ man bash

   [...]

   trap [-lp] [[arg] sigspec ...]
          The command arg is to be read and executed when the shell
          receives signal(s) sigspec.

          [...]

          If a sigspec is EXIT (0) the command arg is executed on
          exit from the shell.
因此,您可以向
.bashrc
添加类似以下代码的内容:

finish() {
  # Your code here
}

trap finish EXIT

请注意,这仅在bash作为登录shell执行时有效,例如,如果您通过SSH登录,或者在gnome终端的配置文件首选项中选中“作为登录shell运行命令”。
finish() {
  # Your code here
}

trap finish EXIT