19

Bash セッションを閉じるたびにスクリプトを実行したいと考えています。

XFCE とターミナル 0.4.5 (Xfce ターミナル エミュレーター) を使用しています。最後のタブを含め、ターミナルのタブを閉じるたびにスクリプトを実行したいと思います (ターミナルを閉じるとき)。

.bashrc のようなものですが、すべてのセッションの最後に実行されます。

.bash_logout が機能しない

4

4 に答える 4

23

使用するtrap(を参照man bash):

trap /u1/myuser/on_exit_script.sh EXIT

コマンドはあなたに追加することができます.profile/.login

これは、シェルを通常どおり(exitコマンドなどで)終了する場合でも、ターミナルウィンドウ/タブを強制終了する場合でも機能します。シェルはEXITどちらの方法でも信号を受信するためです。パテウィンドウを終了してテストしました。

于 2011-02-17T19:21:48.647 に答える
9

私の答えは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
于 2016-03-25T16:41:55.467 に答える
2

「~/.bash_logout」にスクリプトを記述します。ログイン シェルの終了時に bash(1) によって実行されます。

于 2013-11-08T17:08:30.837 に答える
0

alias endbash="./runscript;exit"「exit」でセッションを閉じると、endbash に入って終了することができるかもしれません 。現在Windowsを実行しているため、これが機能するかどうかは完全にはわかりません。

編集:DVKにはより良い答えがあります。

于 2011-02-17T19:15:25.870 に答える