Я написал сценарий, чтобы добавить общие сетевые ресурсы пользователей в список «подключиться к серверам» в Mac OS X (Finder -> Go -> Connect to Server ...). Этот скрипт записывается непосредственно в резервную копию com.apple.sidebarlists.plist, а затем заменяет его после проверки с помощью mv. У меня возникли проблемы с поиском Finder, чтобы узнать, что изменения были внесены в этот plist. Перезагрузка системы отображает новые серверы в списке просто отлично. Однако logout/login и reaunching (kill) Finder нет. Я также пробовал killall SystemUIServer и killall cfprefsd (http://blog.designed79.co.uk/?p=1761) без везения.Force Finder распознает обновленный plist?
Кто-нибудь сталкивался с этим и есть ли решение, чтобы получить список для обновления без перезагрузки?
Спасибо!
Вот часть моего скрипта, который пишет/перемещает/etc для справки.
# ...
cp "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.plist" "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist"
if [[ "$?" != 0 ]]; then
echo "$(date):ERROR: The users com.apple.sidebarlists.plist could not be backed up. Aborting...."
exitfunction
else
echo "$(date): com.apple.sidebarlists.plist was backed up."
fi
defaults delete "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist" favoriteservers
if [[ "$?" != 0 ]]; then
echo "$(date):ERROR: Could not remove favoriteservers from com.apple.sidebarlists.mod.plist. Aborting...."
exitfunction
else
echo "$(date): Favoriteservers was removed from com.apple.sidebarlists.plist."
fi
defaults write "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist" favoriteservers -dict Controller CustomListItems CustomListItems REPLACEME
if [[ "$?" != 0 ]]; then
echo "$(date):ERROR: Could not add favoriteservers to com.apple.sidebarlists.mod.plist. Aborting...."
exitfunction
else
echo "$(date): Favoriteservers was re-added to com.apple.sidebarlists.plist with placeholder."
fi
plutil -convert xml1 "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist"
if [[ "$?" != 0 ]]; then
echo "$(date):ERROR: Could not convert com.apple.sidebarlists.mod.plist to XML1 format. Aborting...."
exitfunction
else
echo "$(date): com.apple.sidebarlists.mod.plist was successfully converted to XML1."
fi
sed -i "" "/ *<string>REPLACEME<\/string>/r $tempfile5" "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist"
if [[ "$?" != 0 ]]; then
echo "$(date):ERROR: Could not inject new server list. Aborting...."
exitfunction
else
echo "$(date): New server list was injected into com.apple.sidebarlists.mod.plist."
fi
sed -i "" 's/ *<string>REPLACEME<\/string>//g' "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist"
if [[ "$?" != 0 ]]; then
echo "$(date):ERROR: Could not remove placeholder tag in com.apple.sidebarlists.mod.plist. Aborting...."
exitfunction
else
echo "$(date): Placeholder tag was removed from com.apple.sidebarlists.mod.plist."
fi
plutil -convert binary1 "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist"
if [[ "$?" != 0 ]]; then
echo "$(date):ERROR: Could not convert com.apple.sidebarlists.mod.plist into binary format. Aborting...."
exitfunction
else
echo "$(date):com.apple.sidebarlists.mod.plist was successfully converted into binary1."
fi
plutil -lint "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist"
if [[ "$?" != 0 ]]; then
echo "$(date):ERROR: Could not validate com.apple.sidebarlists.mod.plist. Aborting...."
exitfunction
else
echo "$(date):com.apple.sidebarlists.mod.plist was successfully verified as a valid XML file."
fi
mv "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.plist" "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.plist.old"
if [[ "$?" != 0 ]]; then
echo "$(date):ERROR: com.apple.sidebarlists.plist could not be moved. Aborting...."
exitfunction
else
echo "$(date):com.apple.sidebarlists.mod.plist was successfully renamed to com.apple.sidebarlists.plist.old."
fi
mv "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist" "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.plist"
if [[ "$?" != 0 ]]; then
echo "$(date):ERROR: apple.sidebar.mod.plist could not be moved. Aborting...."
mv "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.plist.old" "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.plist"
echo "$(date):ERROR: com.apple.sidebarlists.plist plist restored from backup"
exitfunction
else
echo "$(date):com.apple.sidebarlists.mod.plist was successfully renamed to com.apple.sidebarlists.plist.old."
fi
# ....