KDE를 시작할 때 여러 개의 쉘 탭이 열려 있고 방금 추가했습니다.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가 있을 수 있지만 그렇지 않은 경우 파일이 삭제되었는지 폴링하는 루프가 필요합니다.