Exécuter le script avant les sorties de bash
Question
Je voudrais exécuter un script à chaque fois que je ferme une session bash.
J'utilise XFCE et Terminal 0.4.5 (Terminal Emulator XFCE), je voudrais exécuter un script à chaque fois que je ferme un onglet dans le terminal, y compris le dernier (lorsque je ferme le terminal).
Quelque chose comme .Bashrc mais en cours d'exécution à la fin de chaque session.
.bash_logout ne fonctionne pas
La solution
Tu utilises trap
(voir man bash
):
trap /u1/myuser/on_exit_script.sh EXIT
La commande peut être ajoutée à votre .profile/.login
Cela fonctionne si vous sortez normalement de la coque (par exemple via exit
commande) ou tuez simplement la fenêtre / onglet du terminal, car le shell obtient le EXIT
Signal de toute façon - je viens de tester en sortant de ma fenêtre de mastic.
Autres conseils
Ma réponse est similaire à Réponse de DVK Mais vous devez utiliser une commande ou une fonction, pas un fichier.
$ 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.
Ainsi, vous pouvez ajouter à votre .bashrc
quelque chose comme le code suivant:
finish() {
# Your code here
}
trap finish EXIT
Écrivez votre script dans "~ / .bash_logout". Il exécuté par bash (1) lorsque le shell de connexion sort.
Si vous fermez votre session par "sortie", pourrait être capable de quelque chose commealias endbash="./runscript;exit"
Et juste sortir en entrant Endbash. Je ne suis pas entièrement sûr que cela fonctionne, car j'exécute les fenêtres pour le moment.
Edit: DVK a une meilleure réponse.