Ich öffne mehrere Shell-Tabs, wenn ich KDE starte, und ich habe gerade keychain
hinzugefügt zu meinem ~/.shellrc
Das Problem ist, dass alle Registerkarten nach Schlüsselpasswörtern fragen, wenn ich mich anmelde. Das ist ziemlich nervig, dies zu tun. Gibt es dafür eine gute Lösung, sodass alle Registerkarten einfach starten und sobald ich mich bei einer Registerkarte angemeldet habe, alle Schlüssel geladen sind?
Akzeptierte Antwort:
Hier sind zwei Methoden:
So können Sie sicherstellen, dass der Schlüsselbund nur auf einer Registerkarte geöffnet wird:
if mkdir /tmp/keychain.lock; then
eval `keychain --eval --agents ssh id_dsa`
rm -r /tmp/keychain.lock
fi
Aber es ist möglicherweise nicht auf dem ersten Tab, auf dem Sie landen – Sie müssen möglicherweise danach suchen, was genauso ärgerlich sein kann. Dies funktioniert, weil mkdir eine atomare Operation ist – nur ein Skript wird erfolgreich sein, und dieses wird die Eingabeaufforderung anzeigen.
Eine andere Möglichkeit zeigt die Eingabeaufforderung auf allen Registerkarten an, verlässt sie jedoch, sobald Sie auf eine von ihnen antworten. Sie können eine Datei abfragen oder Inotify-Tools wie folgt verwenden:
file=/tmp/keychain-wait
touch $file
inotifywait -e delete_self $file |\
while read file event; do
if [ "$event" = "DELETE_SELF" ]; then
pkill keychain
fi
done &
keychain
rm $file
Dieser zeigt die Eingabeaufforderung an, startet jedoch zuerst einen Beobachter, um zu sehen, ob eine Datei gelöscht wurde. Nachdem die Eingabeaufforderung erfüllt ist, wird die Datei gelöscht, und der Beobachter beendet alle anderen wartenden Eingabeaufforderungen. inotifywait stammt von inotify-tools; inotify ist eine Linux-API. Möglicherweise gibt es eine ähnliche API auf anderen Unices, aber wenn nicht, brauchen Sie nur eine Schleife, die abfragt, ob die Datei gelöscht wurde.