неправильный значок символической ссылки Unix в Finder

Сейчас у меня OS X 10.9, и я не уверен, возникает ли эта проблема и в других версиях.

Итак, у меня много символических ссылок в моей файловой системе (созданных ln -s). Сегодня я модифицировал один из них с помощью ln -f -s(см. подробные шаги ниже). Символическая ссылка работает без проблем, но значок символической ссылки в Finder изменился со значка папки (со значком псевдонима) на значок файла (со значком псевдонима). А именно, значок должен быть

значок папки со значком псевдонима

(поскольку символическая ссылка указывает на папку), но теперь

значок файла со значком псевдонима

Шаги, которые я предпринял для изменения ссылки, были следующими (скажем, у меня была ~/links/folderссылка на символическую ссылку ~/folderраньше, и я хочу перейти ~/folderк ней ~/renamed-folderпри обновлении символической ссылки на ~/links/renamed-folder):

  1. mv ~/links/folder ~/links/wrongly-renamed-folder, ссылка активна, но переименована (в моем конкретном случае она была неправильно переименована, как показала моя история zsh).

  2. mv ~/folder ~/renamed-folder, вот ссылка умерла. После этого шага значок ссылки должен стать значком файла (это поведение по умолчанию, когда ссылка мертва).

  3. mv ~/links/wrongly-renamed-folder ~/links/renamed-folder, я исправил неправильное имя ссылки (я не знаю, повлияло ли это на окончательное поведение, поэтому я честно записываю это здесь).

  4. ln -f -s ~/renamed-folder ~/renamed-folder, ссылка снова работает, и в идеале значок символической ссылки должен вернуться к значку папки. Но в моем случае значок по-прежнему является значком файла.

Я предпринял некоторые меры, чтобы решить эту проблему, но не удалось. То, что я пробовал:

  1. Полностью удалите ссылку и восстановите новую с расширением ln -s. Бесполезно. Значок по-прежнему является значком файла. Как ни странно, если я создам другую ссылку с тем же местом назначения (но с другим именем), значок будет значком папки, как и ожидалось. Только это единственное имя ( ~/links/renamed-folderв приведенном выше примере) является «зарезервированным».

  2. Попробуйте вставить правильный icnsфайл в информационную панель. Бесполезно. И я не ожидал, что это сработает на самом деле, поскольку символические ссылки Unix не имеют собственных связанных значков, в отличие от псевдонимов OS X.

  3. Перезапустите Finder или даже выйдите из системы и войдите снова. Я знаю, что это глупо, но люди делают это в отчаянии. И иногда это работает как волшебство; но не в этот раз, к сожалению.

Затем я провел эксперимент, который фактически выявил ошибку в Finder . Шаги:

  1. ln -s ~/Downloads ~/tmp. Как и ожидалось, значок tmpпредставляет собой значок папки загрузки с псевдонимом скачать папку со значком псевдонима.

  2. rm ~/tmp.

  3. ln -s ~/other-folder ~/tmp. Значок tmp, однако, по-прежнему является значком папки загрузки с псевдонимом, хотя папка, с которой связана ссылка, больше не является папкой загрузки.

Таким образом, кажется, что за кулисами происходит какой-то «кэш», который управляет значками символических ссылок, и Finder иногда не может обновить кеш при изменении символической ссылки.

Итак, мой вопрос: где находится «кеш», который управляет иконками символических ссылок? Спасибо.

Ответы (1)

У меня была такая же проблема, и, похоже, проблема в 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 это должно работать без перезагрузки или повторного входа в систему.

Это настолько неясно, что каждый раз, когда мне нужно регенерировать эти миниатюры символических ссылок, мне приходится снова обращаться к этому... (И я всегда по ошибке сначала захожу в свой профиль суперпользователя...)