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

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

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

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

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

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: как точечные файлы стали скрытыми

Другие вопросы по тегам