Запустите скрипт перед выходом Bash - PullRequest
17 голосов
/ 17 февраля 2011

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

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

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

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

Ответы [ 4 ]

16 голосов
/ 17 февраля 2011

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

trap /u1/myuser/on_exit_script.sh EXIT

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

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

7 голосов
/ 25 марта 2016

Мой ответ похож на Ответ 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
1 голос
/ 08 ноября 2013

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

0 голосов
/ 17 февраля 2011

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

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

...