Warum speichern Software häufig lokale Daten in $ HOME /.<appname>? </appname>

661
KiriaKasis

Die meisten Anwendungen, die ich normalerweise installiere (opam, cargo, vscode, julia, ...), bewahren einen lokalen Speicher in meinem Home-Ordner auf. Gibt es einen Grund für diese Präferenz? Oder besser, gibt es Nachteile bei den Alternativen?

Zum Beispiel wird manchmal empfohlen, dass sich diese Dateien auf / var oder in ~ / .local / share befinden. Es kann jedoch zu Problemen oder Ärger bei der Verwendung dieser Ordner in der Anwendung "Cross-distro" kommen.

Kennen Sie solche möglichen Probleme?

[Jede Antwort auf eine der drei Fragen, die ich hier gestellt habe, wäre zufriedenstellend]

1
Ich habe versehentlich das appdata-Tag ausgewählt. Diese Frage hat nichts mit% appdata% zu tun, aber ich weiß nicht, wie ich sie entfernen kann ... KiriaKasis vor 6 Jahren 0

1 Antwort auf die Frage

1
harrymc

In einem Google+ Beitrag von Rob Pike wird eine Lektion mit Abkürzungen wie folgt erklärt:

Vor langer Zeit, als das Design des Unix-Dateisystems ausgearbeitet wurde, erschienen die Einträge .und ..erschienen, um die Navigation zu erleichtern. Ich bin mir nicht sicher, aber ich glaube, dass es ..während der Neufassung von Version 2 eingegangen ist, als das Dateisystem hierarchisch wurde (es hatte schon früh eine andere Struktur). Bei der Eingabe lsdieser Dateien wurden diese Dateien jedoch angezeigt, sodass Ken oder Dennis dem Programm einen einfachen Test hinzufügten. Es war damals im Assembler, aber der fragliche Code entsprach ungefähr dem folgenden:

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

Diese Aussage war etwas kürzer als das, was sie hätte sein sollen

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

aber hey, es war einfach.

Es resultierten zwei Dinge.

Zunächst wurde ein schlechter Präzedenzfall geschaffen. Viele andere faule Programmierer führten Bugs durch die gleiche Vereinfachung ein. Tatsächliche Dateien, die mit Punkten beginnen, werden oft übersprungen, wenn sie gezählt werden sollen.

Zweitens und noch viel schlimmer wurde die Idee einer "versteckten" oder "Punkt" -Datei geschaffen. Infolgedessen fingen mehr faule Programmierer an, Dateien in das Heimatverzeichnis aller zu legen. Ich habe nicht allzu viel auf dem Computer installiert, auf dem ich das tippe, aber mein Home-Verzeichnis enthält etwa hundert Punktdateien, und ich weiß gar nicht, was die meisten sind oder ob sie noch benötigt werden . Jede Dateinamenauswertung, die mein Heimatverzeichnis durchläuft, wird durch diesen angesammelten Schlamm verlangsamt.

Ich bin mir ziemlich sicher, dass das Konzept einer versteckten Datei eine unbeabsichtigte Folge war. Es war sicherlich ein Fehler.

(Für diejenigen, die Einwände dagegen haben, dass Punktdateien einem Zweck dienen, bestreite ich dies nicht, sondern widerspreche, dass die Dateien dem Zweck dienen und nicht der Konvention für ihren Namen. Sie könnten genauso einfach in $ HOME / cfg oder $ HOME stehen / lib, das haben wir in Plan 9 getan, in dem es keine Punktdateien gab. Lektionen können gelernt werden.)

Was ich verstehe ist also:

Als diese "Punktdateien" unsichtbar wurden, sprangen andere Programmierer ein und beschlossen, dass der Ort, an dem sie ihre wertvollen Konfigurationsdaten speichern sollten, in Punktdateien neben den Dateien .und enthalten war ... Da die Dateierhierarchie zu Beginn noch nicht sehr weit fortgeschritten war, landeten sie alle im $ HOME-Verzeichnis, und dies wurde schnell zu einer ungeschriebenen Konvention, an die sich alle beteiligten, und zwar in den Schritten der Gründerväter.

Dies führte zu solchen Monstrositäten wie:

Bild

Referenz :

Linux-Geschichte: Wie aus Punktdateien versteckte Dateien wurden