
Большинство приложений, которые я обычно устанавливаю (opam, cargo, vscode, julia, ...), сохраняют локальное хранилище в моей домашней папке. Есть ли причина для такого предпочтения? Или, лучше сказать, есть ли недостатки у альтернатив?
Например, иногда предлагается размещать такие файлы в каталоге /var или в ~/.local/share, но при использовании этих папок в «кросс-дистрибутивных» приложениях могут возникнуть проблемы или неудобства.
Знаете ли вы о таких возможных проблемах?
[любой ответ на любой из трех вопросов, которые я здесь задал, будет удовлетворительным]
решение1
В сообщении Роба Пайка в Google+: Урок коротких путей, дается следующее объяснение:
Давным-давно, когда разрабатывался дизайн файловой системы Unix, появились записи
.
и..
для облегчения навигации. Я не уверен, но, по-моему,..
они появились во время переписывания версии 2, когда файловая система стала иерархической (раньше она имела совсем другую структуру).ls
Однако, когда кто-то набирал , эти файлы появлялись, поэтому Кен или Деннис добавляли в программу простую проверку. Тогда она была на ассемблере, но рассматриваемый код был эквивалентен чему-то вроде этого:if (name[0] == '.') continue;
Это заявление было немного короче, чем следовало бы, т.е.
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;
но эй, это было легко.
Результатом стали два события.
Во-первых, был создан плохой прецедент. Множество других ленивых программистов внесли ошибки, сделав то же самое упрощение. Фактические файлы, начинающиеся с точек, часто пропускаются, когда их следует учитывать.
Во-вторых, и это гораздо хуже, была создана идея «скрытого» или «точечного» файла. В результате более ленивые программисты начали сбрасывать файлы в домашний каталог каждого. У меня не так уж много всего установлено на машине, которую я использую для набора этого текста, но в моем домашнем каталоге около сотни точечных файлов, и я даже не знаю, что это за большинство из них и нужны ли они еще. Каждая оценка имени файла, проходящая через мой домашний каталог, замедляется этим накопившимся шламом.
Я почти уверен, что концепция скрытого файла была непреднамеренным последствием. Это была, безусловно, ошибка.
(Для тех, кто возражает, что файлы с точками служат определенной цели, я не спорю с этим, но возражаю, что цели служат сами файлы, а не соглашение об их именах. Они могли бы с таким же успехом находиться в $HOME/cfg или $HOME/lib, что мы и делали в Plan 9, где не было файлов с точками. Из этого можно извлечь уроки.)
Итак, я понимаю, что:
Когда эти «точечные файлы» стали невидимыми, другие программисты подключились и решили, что место для хранения их драгоценных данных конфигурации — это точечные файлы вместе с файлами .
и ..
. Поскольку изначально иерархия файлов не была особо развита, все они оказались в каталоге $HOME, и довольно быстро это стало негласным соглашением, которому все следовали, следуя по стопам отцов-основателей.
Это породило такие чудовища, как:
Ссылка :