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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top