Запустите script до выхода Bash

Я хотел бы запускать script каждый раз, когда я закрываю сеанс Bash.

Я использую XFCE и Terminal 0.4.5 (эмулятор терминала Xfce), я хотел бы запускать script каждый раз, когда я закрываю вкладку в терминале, включая последнюю (когда я закрываю терминал).

Что-то вроде .bashrc, но работает в конце каждого сеанса.

.bash_logout не работает.

Ответы

Ответ 1

Вы используете trap (см. man bash):

trap /u1/myuser/on_exit_script.sh EXIT

Команда может быть добавлена ​​в ваш .profile/.login

Это работает, если вы выходите из оболочки обычно (например, с помощью команды exit) или просто убиваете окно терминала/вкладку, так как оболочка получает сигнал exit в любом случае - я просто протестировал, покинув окно шпатлевки.

Ответ 2

Мой ответ похож на ответ 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

Ответ 3

Если вы закрываете сеанс с "exit", возможно, что-то вроде alias endbash="./runscript;exit" и просто выйти, введя endbash. Я не совсем уверен, что это работает, поскольку я запускаю окна в данный момент.

edit: DVK имеет лучший ответ.

Ответ 4

Напишите вам script в "~/.bash_logout". Он выполняется с помощью bash (1) при выходе из оболочки входа.