Ich folge dieser Anleitung zum Einrichten der kennwortlosen SSH-Authentifizierung mit ssh-agent.
Um ssh-agent zu starten, empfiehlt der Autor den folgenden Code in .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
Ich verstehe nicht, warum es das Signal 0 einfängt. Laut dem Signal von Mann 7 gibt es kein solches Signal.
Ist das nur ein Tippfehler oder ein Fehler oder erreicht dies wirklich etwas?
0
eines Shell-trap
Befehls ist. Beim Senden eines Signals mit bedeutetkill
eine Signalnummer von 0, dass doch kein Signal gesendet wird. Auf diese Weise können Sie die Existenz des Zielprozesses testen.trap -l
!Wie @Mat in seiner Antwort zeigt, führt ein SIGSPEC von 0 bei Verwendung des
trap
Befehls dazu, dass dertrap
Befehl ausgeführt wird, wenn das Skript beendet wird.Dieses Beispiel zeigt, was passiert.
Wenn wir das ausführen:
Es sitzt hier und wartet auf unbestimmte Zeit. In einem anderen Fenster, wenn wir jetzt
kill
Signale an dieses senden , sehen Sie, dass akill -0
den Prozess nicht abbricht, obwohl Signal 0 imtrap
Befehl aufgeführt ist.Wenn wir jedoch
kill
das Skript mit Signal 1 verwenden ,kill -1
:Wir werden sehen, dass das Skript beendet wird und die Nachricht "hi" zweimal gedruckt wird. Das erste für Signal 1 und das zweite, weil das Skript beendet wurde.
quelle
Trap on 0 wird ausgeführt, wenn die Shell beendet wird. Es wird häufig verwendet, um tmp-Dateien an einem Ort zu bereinigen, der immer ausgeführt wird:
Der Ausgang am Ende der Falle verlässt die Shell bei der Bereinigung mit dem richtigen Status.
quelle