KDEを起動するときに複数のシェルタブを開き、keychain
を追加しました 私の~/.shellrc
に 問題は、ログイン時にすべてのタブでキーパスワードの入力を求められることです。これを行うのは非常に面倒です。すべてのタブが簡単に起動し、1つのタブにログインすると、すべてのタブにキーが読み込まれるようにするための適切な解決策はありますか?
承認された回答:
2つの方法があります:
次のように、キーチェーンが1つのタブでのみ開くようにすることができます:
if mkdir /tmp/keychain.lock; then
eval `keychain --eval --agents ssh id_dsa`
rm -r /tmp/keychain.lock
fi
しかし、それはあなたが着陸した最初のタブにないかもしれません–あなたはそれを捜さなければならないかもしれません、それは同じように迷惑かもしれません。これは、mkdirが不可分操作であるために機能します。成功するスクリプトは1つだけであり、そのスクリプトでプロンプトが表示されます。
別の方法では、すべてのタブにプロンプトが表示されますが、いずれかのタブに応答すると終了します。ファイルをポーリングするか、次のようなinotify-toolsを使用できます:
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-toolsからのものです。 inotifyはLinuxAPIです。他のUnicesにも同様のAPIがある可能性がありますが、そうでない場合は、ファイルが削除されているかどうかを確認するためにポーリングするループのみが必要です。