Сейчас у меня OS X 10.9, и я не уверен, возникает ли эта проблема и в других версиях.
Итак, у меня много символических ссылок в моей файловой системе (созданных ln -s
). Сегодня я модифицировал один из них с помощью ln -f -s
(см. подробные шаги ниже). Символическая ссылка работает без проблем, но значок символической ссылки в Finder изменился со значка папки (со значком псевдонима) на значок файла (со значком псевдонима). А именно, значок должен быть
(поскольку символическая ссылка указывает на папку), но теперь
Шаги, которые я предпринял для изменения ссылки, были следующими (скажем, у меня была ~/links/folder
ссылка на символическую ссылку ~/folder
раньше, и я хочу перейти ~/folder
к ней ~/renamed-folder
при обновлении символической ссылки на ~/links/renamed-folder
):
mv ~/links/folder ~/links/wrongly-renamed-folder
, ссылка активна, но переименована (в моем конкретном случае она была неправильно переименована, как показала моя история zsh).
mv ~/folder ~/renamed-folder
, вот ссылка умерла. После этого шага значок ссылки должен стать значком файла (это поведение по умолчанию, когда ссылка мертва).
mv ~/links/wrongly-renamed-folder ~/links/renamed-folder
, я исправил неправильное имя ссылки (я не знаю, повлияло ли это на окончательное поведение, поэтому я честно записываю это здесь).
ln -f -s ~/renamed-folder ~/renamed-folder
, ссылка снова работает, и в идеале значок символической ссылки должен вернуться к значку папки. Но в моем случае значок по-прежнему является значком файла.
Я предпринял некоторые меры, чтобы решить эту проблему, но не удалось. То, что я пробовал:
Полностью удалите ссылку и восстановите новую с расширением ln -s
. Бесполезно. Значок по-прежнему является значком файла. Как ни странно, если я создам другую ссылку с тем же местом назначения (но с другим именем), значок будет значком папки, как и ожидалось. Только это единственное имя ( ~/links/renamed-folder
в приведенном выше примере) является «зарезервированным».
Попробуйте вставить правильный icns
файл в информационную панель. Бесполезно. И я не ожидал, что это сработает на самом деле, поскольку символические ссылки Unix не имеют собственных связанных значков, в отличие от псевдонимов OS X.
Перезапустите Finder или даже выйдите из системы и войдите снова. Я знаю, что это глупо, но люди делают это в отчаянии. И иногда это работает как волшебство; но не в этот раз, к сожалению.
Затем я провел эксперимент, который фактически выявил ошибку в Finder . Шаги:
ln -s ~/Downloads ~/tmp
. Как и ожидалось, значок tmp
представляет собой значок папки загрузки с псевдонимом .
rm ~/tmp
.
ln -s ~/other-folder ~/tmp
. Значок tmp
, однако, по-прежнему является значком папки загрузки с псевдонимом, хотя папка, с которой связана ссылка, больше не является папкой загрузки.
Таким образом, кажется, что за кулисами происходит какой-то «кэш», который управляет значками символических ссылок, и Finder иногда не может обновить кеш при изменении символической ссылки.
Итак, мой вопрос: где находится «кеш», который управляет иконками символических ссылок? Спасибо.
У меня была такая же проблема, и, похоже, проблема в LaunchService в OS X. Чтобы очистить «кеш», попробуйте эту команду в терминале
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user ;
а потом
killall Finder; killall Dock;
В Mavericks это должно работать без перезагрузки или повторного входа в систему.
4ae1e1