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

409
KiriaKasis

Большинство приложений, которые я обычно устанавливаю (opam, cargo, vscode, julia, ...), хранят локальное хранилище в моей домашней папке. Есть ли причина для этого предпочтения? Или лучше, есть ли недостатки у альтернатив?

Например, иногда предлагается, чтобы такие файлы были расположены в / var или в ~ / .local / share, но могут быть проблемы или неудобства при использовании этих папок в приложении "cross-distro".

Знаете ли вы такие возможные проблемы?

[любой ответ на любой из трех вопросов, которые я задавал здесь, был бы удовлетворительным]

1
Я выбрал тег appdata по ошибке; этот вопрос не имеет ничего общего с% appdata%, но я не знаю, как его удалить ... KiriaKasis 6 лет назад 0

1 ответ на вопрос

1
harrymc

В посте Google+ Роба Пайка " Урок в ярлыках" дается следующее объяснение:

Давным-давно, когда разрабатывался дизайн файловой системы Unix, появились .и ..появились записи, облегчающие навигацию. Я не уверен, но я верю, что это ..произошло во время переписывания Версии 2, когда файловая система стала иерархической (в начале у нее была совсем другая структура). Однако, когда кто-то печатал ls, эти файлы появлялись, поэтому Кен или Деннис добавили в программу простой тест. Тогда это было на ассемблере, но рассматриваемый код был эквивалентен примерно так:

 if (name[0] == '.') continue; 

Это утверждение было немного короче, чем должно было быть,

 if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue; 

но эй, это было легко.

Две вещи привели.

Во-первых, был создан плохой прецедент. Многие другие ленивые программисты вносили ошибки, делая то же самое упрощение. Фактические файлы, начинающиеся с периодов, часто пропускаются, когда они должны быть подсчитаны.

Во-вторых, что гораздо хуже, была создана идея «скрытого» или «точечного» файла. Как следствие, более ленивые программисты начали сбрасывать файлы в домашний каталог каждого. У меня не так много всего установлено на машине, которую я использую, чтобы напечатать это, но мой домашний каталог содержит около ста файлов точек, и я даже не знаю, что из них большинство или они все еще нужны, Каждая оценка имени файла, которая проходит через мой домашний каталог, замедляется этим накопленным осадком.

Я почти уверен, что концепция скрытого файла была непреднамеренным следствием. Это была конечно ошибка.

(Для тех, кто возражает, что точечные файлы служат какой-то цели, я не оспариваю это, но считаю, что это файлы, которые служат цели, а не соглашению об их именах. Они могут быть так же легко находиться в $ HOME / cfg или $ HOME / lib, что мы и сделали в Plan 9, у которого не было файлов точек. Уроки можно извлечь.)

Итак, я понимаю, что

Поскольку эти «точечные файлы» стали невидимы, другими программисты вскочили и решили, что место для хранения своих драгоценных данных конфигурации было в доте файлов прямо вместе с .и ..файлами. Поскольку в начале файловая иерархия не была очень развитой, все они оказались в каталоге $ HOME, и довольно быстро это стало неписаным соглашением, которому все подчинялись, следуя указаниям отцов-основателей.

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

image

Ссылка :

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

Похожие вопросы