Запустить скрипт перед выходом из Bash

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

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

Что-то вроде .bashrc, но запускается в конце каждого сеанса.

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


person Facundo Casco    schedule 17.02.2011    source источник


Ответы (4)


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

trap /u1/myuser/on_exit_script.sh EXIT

Команду можно добавить в свой .profile/.login

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

person DVK    schedule 17.02.2011

Мой ответ похож на ответ 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
person Arturo Herrero    schedule 25.03.2016

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

person jellyfish    schedule 08.11.2013
comment
Обратите внимание, что это работает только в том случае, если bash выполняется как оболочка входа в систему, например. если вы входите через SSH или проверяете команду «Выполнить» в качестве оболочки входа в настройки профиля gnome-terminal. - person Splitlocked; 05.01.2015

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

редактировать: у DVK есть лучший ответ.

person gailbear    schedule 17.02.2011