5 votes

Quelle méthode s'exécute à la sortie de bash via CTRL-D ?

Semblable à un poste à propos de cd j'ai écrasé exit pour faire ce qui suit :

function exit() { $HOME/script.sh && builtin exit "$@"; }

Bien que cela fonctionne comme prévu lorsque exit est appelé directement, lorsque le Shell est quitté via CTRL-D, celui-ci ne s'exécute pas, OU, s'il s'exécute, le Shell ne parvient pas à se terminer.

Qu'est-ce qui se passe ? Est-ce qu'une méthode autre que exit appelé lorsque CTRL-D est utilisé ?

10voto

JJ Wille Points 21

Lorsque vous appuyez sur Ctrl + D ce que vous dites vraiment à Bash est EOF (fin du dossier). Ainsi, le Shell se termine simplement parce qu'il n'y a plus d'entrée à lire. Si vous voulez effectuer des actions à la sortie, utilisez un piège :

trap "~/script.sh" exit

En utilisant le piège "exit", vous pouvez exécuter n'importe quelle commande Shell. juste avant le Shell sort, et il importe peu que le Shell ait été terminé par exit ou par Ctrl + D .

0voto

Slartibartfast Points 7645

Extrait de la page de manuel de bash : "Lorsqu'un login Shell sort, bash lit et exécute les commandes du fichier ~/.bash_logout, s'il existe."

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X