Почему программы часто хранят локальные данные в $ 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, и довольно быстро это стало неписаным соглашением, которому все подчинялись, следуя указаниям отцов-основателей.
Это привело к таким чудовищам как:
Ссылка: