Saya membuka banyak tab shell saat memulai KDE, dan saya baru saja menambahkan keychain
ke ~/.shellrc
saya masalahnya adalah semua tab meminta kata sandi utama saat saya masuk. Ini cukup mengganggu untuk melakukan ini. Apakah ada solusi yang baik untuk ini sehingga semua tab dapat dimulai, dan setelah saya masuk ke satu tab, semuanya memiliki kunci yang dimuat?
Jawaban yang Diterima:
Berikut adalah dua metode:
Anda dapat memastikan bahwa gantungan kunci hanya terbuka pada satu tab seperti ini:
if mkdir /tmp/keychain.lock; then
eval `keychain --eval --agents ssh id_dsa`
rm -r /tmp/keychain.lock
fi
Tapi itu mungkin bukan di tab pertama yang Anda gunakan – Anda mungkin harus mencarinya, yang bisa sama menyebalkannya. Ini berfungsi karena mkdir adalah operasi atom – hanya satu skrip yang akan berhasil, dan skrip tersebut akan menampilkan prompt.
Cara lain akan menampilkan prompt di semua tab, tetapi akan menutupnya begitu Anda merespons salah satu dari mereka. Anda dapat melakukan polling file atau menggunakan alat inotify seperti ini:
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
Yang ini menyajikan prompt, tetapi pertama-tama ia memulai pengamat untuk melihat apakah file dihapus. Setelah prompt dipenuhi, file akan dihapus, dan pengamat akan mematikan prompt lain yang menunggu. inotifywait berasal dari inotify-tools; inotify adalah API Linux. Mungkin ada API serupa di Unices lain, tetapi jika tidak, Anda hanya perlu loop yang melakukan polling untuk melihat apakah file tersebut dihapus.