Když spustím KDE, otevřu několik záložek prostředí a právě jsem přidal keychain
na můj ~/.shellrc
problém je v tom, že všechny karty po přihlášení vyžadují klíčová hesla. Dělat to je docela nepříjemné. Existuje na to nějaké dobré řešení, aby se všechny karty jednoduše spustily, a jakmile se přihlásím na jednu kartu, všechny budou mít načtené klíče?
Přijatá odpověď:
Zde jsou dvě metody:
Můžete zajistit, aby se klíčenka otevřela pouze na jedné kartě, jako je tato:
if mkdir /tmp/keychain.lock; then
eval `keychain --eval --agents ssh id_dsa`
rm -r /tmp/keychain.lock
fi
Ale nemusí to být na první kartě, na kterou se dostanete – možná ji budete muset hledat, což může být stejně nepříjemné. Funguje to, protože mkdir je atomická operace – pouze jeden skript bude úspěšný a ten zobrazí výzvu.
Jiný způsob zobrazí výzvu na všech kartách, ale zavře je, jakmile na kteroukoli z nich odpovíte. Můžete vyzpovídat soubor nebo použít inotify-tools takto:
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
Tento představuje výzvu, ale nejprve spustí hlídač, aby zjistil, zda je soubor odstraněn. Poté, co je výzva splněna, je soubor odstraněn a sledující ukončí všechny další čekající výzvy. inotifywait pochází z inotify-tools; inotify je linuxové API. Na jiných Unices může být podobné API, ale pokud ne, potřebujete pouze smyčku, která se dotazuje, zda je soubor smazán.