Apro più schede della shell quando avvio KDE e ho appena aggiunto keychain
al mio ~/.shellrc
il problema è che tutte le schede richiedono le password delle chiavi quando accedo. È abbastanza fastidioso farlo. C'è una buona soluzione per questo in modo che tutte le schede si avviino semplicemente e una volta che ho effettuato l'accesso a una scheda, tutte hanno le chiavi caricate?
Risposta accettata:
Ecco due metodi:
Puoi assicurarti che il portachiavi si apra solo su una scheda come questa:
if mkdir /tmp/keychain.lock; then
eval `keychain --eval --agents ssh id_dsa`
rm -r /tmp/keychain.lock
fi
Ma potrebbe non essere nella prima scheda in cui atterri:potresti doverlo cercare, il che potrebbe essere altrettanto fastidioso. Funziona perché mkdir è un'operazione atomica:solo uno script avrà esito positivo e quello visualizzerà il prompt.
Un altro modo visualizzerà il prompt su tutte le schede, ma le chiuderà una volta che rispondi a una di esse. Puoi eseguire il polling di un file o utilizzare inotify-tools come questo:
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
Questo presenta il prompt, ma prima avvia un watcher per vedere se un file è stato eliminato. Dopo che il prompt è soddisfatto, il file viene eliminato e il watcher ucciderà tutti gli altri prompt in attesa. inotifywait proviene da inotify-tools; inotify è un'API Linux. Potrebbe esserci un'API simile su altri Unice, ma in caso contrario, hai solo bisogno di un ciclo che esegua il polling per vedere se il file è stato eliminato.