Je suis ce guide sur la façon de configurer l'authentification SSH sans mot de passe avec ssh-agent.
Pour démarrer ssh-agent, l'auteur recommande le code suivant dans .bash_profile
:
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
Je ne comprends pas pourquoi il piège le signal 0. Selon le signal de l' homme 7, il n'y a pas un tel signal.
S'agit-il simplement d'une faute de frappe ou d'un bug ou est-ce que cela permet vraiment d'atteindre quelque chose?
0
dans unetrap
commande shell . Lors de l'envoi d'un signal aveckill
, un numéro de signal de 0 signifie ne pas envoyer de signal après tout; c'est une façon de tester l'existence du processus cible.trap -l
!Comme @Mat le montre dans sa réponse, un SIGSPEC de 0, lorsqu'il est utilisé sur la
trap
commande, provoquera l'trap
exécution de la commande à la fin du script.Cet exemple illustre ce qui se passe.
Lorsque nous exécutons ceci:
Il attend ici indéfiniment. Dans une autre fenêtre, si nous lui envoyons maintenant des
kill
signaux, vous verrez qu'unkill -0
ne tuera pas le processus, même si le signal 0 est répertorié dans latrap
commande.Cependant, si nous
kill
le script utilisant le signal 1kill -1
,:Nous verrons que le script se termine et imprime le message "salut" 2 fois. Le premier pour le signal 1 et le second parce que le script est sorti.
la source
trap on 0 est exécuté lorsque le shell se termine. Il est couramment utilisé pour nettoyer les fichiers tmp en un seul endroit qui est toujours exécuté:
la sortie à la fin du piège quitte la coquille au nettoyage avec le bon état.
la source