当我启动 KDE 时,我打开多个 shell 选项卡,并且我刚刚添加了keychain
对我来说,~/.shellrc
问题是当我登录时,所有选项卡都会提示输入关键密码。这样做是相当烦人的。是否有任何好的解决方案,以便所有选项卡都可以启动,并且一旦我登录到一个选项卡,所有选项卡都已加载密钥?
答案1
这里有两种方法:
您可以确保钥匙串仅在一个选项卡上打开,如下所示:
if mkdir /tmp/keychain.lock; then
eval `keychain --eval --agents ssh id_dsa`
rm -r /tmp/keychain.lock
fi
但它可能不在您登陆的第一个选项卡上 - 您可能必须寻找它,这可能同样烦人。这是可行的,因为 mkdir 是一项原子操作 - 只有一个脚本会成功,并且该脚本将显示提示。
另一种方法将在所有选项卡上显示提示,但一旦您对其中任何一个选项卡做出响应,就会退出它们。您可以轮询文件或使用 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,但如果没有,您只需要一个循环来轮询文件是否被删除。