KDEを起動すると、複数のシェルタブが開いていて、追加しました。keychain
私にとって問題~/.shellrc
は、ログインすると、すべてのタブにキーパスワードの入力を求めるメッセージが表示されることです。これはかなり迷惑です。すべてのタブを起動でき、1つのタブにログインすると、すべてのタブにキーがロードされるようにするための良いソリューションはありますか?
答え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はLinux APIです。他のUnicesにも同様のAPIがあるかもしれませんが、そうでない場合は、ファイルが削除されたかどうかをポーリングするループが必要です。