我想在每次關閉Bash會話時運行腳本。我想使用XFCE和終端0.4.5(Xfce終端仿真器),我想每次關閉包括最後一個終端(當我關閉終端時)在終端選項卡上運行腳本。Bash退出前運行腳本
類似.bashrc但在每個會話結束時運行。
.bash_logout中不起作用
我想在每次關閉Bash會話時運行腳本。我想使用XFCE和終端0.4.5(Xfce終端仿真器),我想每次關閉包括最後一個終端(當我關閉終端時)在終端選項卡上運行腳本。Bash退出前運行腳本
類似.bashrc但在每個會話結束時運行。
.bash_logout中不起作用
您使用trap
(見man bash
):
trap /u1/myuser/on_exit_script.sh EXIT
該命令可以被添加到您的
這個工作是否正常退出外殼(例如,通過exit
命令),或者乾脆殺終端窗口/選項卡,因爲shell以任何方式獲得EXIT
信號 - 我只是通過退出我的膩子窗口進行測試。
如果用「退出」關閉會話,也許能夠像 alias endbash="./runscript;exit"
並通過輸入endbash只是退出。我並不完全確定這是有效的,因爲我現在正在運行Windows。
編輯:DVK有一個更好的答案。
在「〜/ .bash_logout」中編寫腳本。它在登錄shell退出時由bash(1)執行。
我的答案與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
請注意,這僅適用如果bash作爲登錄shell,例如執行如果您通過SSH登錄或在gnome-terminal的配置文件首選項中選中「將命令作爲登錄shell運行」。 – Splitlocked 2015-01-05 10:41:08