Bash セッションを閉じるたびにスクリプトを実行したいと考えています。
XFCE とターミナル 0.4.5 (Xfce ターミナル エミュレーター) を使用しています。最後のタブを含め、ターミナルのタブを閉じるたびにスクリプトを実行したいと思います (ターミナルを閉じるとき)。
.bashrc のようなものですが、すべてのセッションの最後に実行されます。
.bash_logout が機能しない
使用するtrap
(を参照man bash
):
trap /u1/myuser/on_exit_script.sh EXIT
コマンドはあなたに追加することができます.profile/.login
これは、シェルを通常どおり(exit
コマンドなどで)終了する場合でも、ターミナルウィンドウ/タブを強制終了する場合でも機能します。シェルはEXIT
どちらの方法でも信号を受信するためです。パテウィンドウを終了してテストしました。
私の答えはDVK の答えに似ていますが、ファイルではなくコマンドまたは関数を使用する必要があります。
$ 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_logout」にスクリプトを記述します。ログイン シェルの終了時に bash(1) によって実行されます。
alias endbash="./runscript;exit"
「exit」でセッションを閉じると、endbash に入って終了することができるかもしれません
。現在Windowsを実行しているため、これが機能するかどうかは完全にはわかりません。
編集:DVKにはより良い答えがあります。