Почему программное обеспечение часто хранит локальные данные в $HOME/.?

Почему программное обеспечение часто хранит локальные данные в $HOME/.?

Большинство приложений, которые я обычно устанавливаю (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, и довольно быстро это стало негласным соглашением, которому все следовали, следуя по стопам отцов-основателей.

Это породило такие чудовища, как:

изображение

Ссылка :

История Linux: как файлы Dot стали скрытыми файлами

Связанный контент