Существует опция -n
, и намного больше в странице руководства, которую стоит прочитать.
Вот два метода:
Можно удостовериться, что связка ключей только открывается на одной вкладке как это:
if mkdir /tmp/keychain.lock; then
eval `keychain --eval --agents ssh id_dsa`
rm -r /tmp/keychain.lock
fi
Но это не может быть на первой вкладке, на которую Вы приземляетесь - Вам, возможно, придется искать для него, который мог быть столь же раздражающим. Это работает, потому что mkdir является атомарной операцией - только один сценарий успешно выполнится, и что каждый отобразит подсказку.
Иначе отобразит подсказку на всех вкладках, но выйдет из них, после того как Вы отвечаете на любом из них. Можно опросить файл или использовать inotify-инструменты как это:
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
Эти подарки подсказка, но сначала это запускает наблюдателя, чтобы видеть, удален ли файл. После того, как подсказка удовлетворена, файл удален, и наблюдатель уничтожит любые другие подсказки, которые ожидают. inotifywait от inotify-инструментов; inotify является API Linux. На других Нельдах может быть подобный API, но в противном случае Вам только нужен цикл, который опрашивает, чтобы видеть, удален ли файл.