2011-02-17 121 views
13

我想在每次關閉Bash會話時運行腳本。我想使用XFCE和終端0.4.5(Xfce終端仿真器),我想每次關閉包括最後一個終端(當我關閉終端時)在終端選項卡上運行腳本。Bash退出前運行腳本

類似.bashrc但在每個會話結束時運行。

.bash_logout中不起作用

回答

14

您使用trap(見man bash):

trap /u1/myuser/on_exit_script.sh EXIT 

該命令可以被添加到您的​​

這個工作是否正常退出外殼(例如,通過exit命令),或者乾脆殺終端窗口/選項卡,因爲shell以任何方式獲得EXIT信號 - 我只是通過退出我的膩子窗口進行測試。

0

如果用「退出」關閉會話,也許能夠像 alias endbash="./runscript;exit"並通過輸入endbash只是退出。我並不完全確定這是有效的,因爲我現在正在運行Windows。

編輯:DVK有一個更好的答案。

0

在「〜/ .bash_logout」中編寫腳本。它在登錄shell退出時由bash(1)執行。

+0

請注意,這僅適用如果bash作爲登錄shell,例如執行如果您通過SSH登錄或在gnome-terminal的配置文件首選項中選中「將命令作爲登錄shell運行」。 – Splitlocked 2015-01-05 10:41:08

4

我的答案與DVK's answer類似,但您必須使用命令或函數,而不是文件。

$ 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