Запустите 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) при выходе из оболочки входа.