
Die meisten Anwendungen, die ich normalerweise installiere (opam, cargo, vscode, julia, ...), speichern lokal in meinem Home-Ordner. Gibt es einen Grund für diese Präferenz? Oder besser: Gibt es Nachteile bei den Alternativen?
Beispielsweise wird manchmal empfohlen, solche Dateien unter /var oder ~/.local/share zu speichern. Bei der Verwendung dieser Ordner in einer Distributionsübergreifenden Anwendung kann es jedoch zu Problemen oder Unannehmlichkeiten kommen.
Kennen Sie solche möglichen Probleme?
[jede Antwort auf eine der drei Fragen, die ich hier gestellt habe, wäre zufriedenstellend]
Antwort1
In einem Google+-Beitrag von Rob Pike: Eine Lektion in Abkürzungen, erhält folgende Erklärung:
Vor langer Zeit, als das Design des Unix-Dateisystems ausgearbeitet wurde, erschienen die Einträge
.
und..
, um die Navigation zu erleichtern. Ich bin mir nicht sicher, aber ich glaube,..
es wurde während der Neufassung von Version 2 hinzugefügt, als das Dateisystem hierarchisch wurde (es hatte anfangs eine ganz andere Struktur). Wenn manls
jedoch eingab, erschienen diese Dateien, also fügten entweder Ken oder Dennis dem Programm einen einfachen Test hinzu. Es war damals in Assembler, aber der fragliche Code entsprach ungefähr diesem:if (name[0] == '.') continue;
Diese Aussage war etwas kürzer als sie hätte sein sollen, nämlich
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;
aber hey, es war einfach.
Das Ergebnis waren zwei Dinge.
Erstens wurde ein schlechter Präzedenzfall geschaffen. Viele andere faule Programmierer führten Fehler ein, indem sie die gleiche Vereinfachung vornahmen. Tatsächliche Dateien, die mit Punkten beginnen, werden oft übersprungen, obwohl sie gezählt werden sollten.
Zweitens, und das ist viel schlimmer, wurde die Idee einer „versteckten“ oder „Punkt“-Datei geboren. Als Folge davon begannen noch mehr faule Programmierer damit, Dateien in die Home-Verzeichnisse aller zu legen. Auf der Maschine, die ich zum Schreiben dieses Textes verwende, ist nicht allzu viel installiert, aber mein Home-Verzeichnis enthält ungefähr hundert Punktdateien, und ich weiß nicht einmal, was die meisten davon sind oder ob sie noch benötigt werden. Jede Dateinamenauswertung, die über mein Home-Verzeichnis läuft, wird durch diesen angesammelten Schlamm verlangsamt.
Ich bin ziemlich sicher, dass das Konzept einer versteckten Datei eine unbeabsichtigte Folge war. Es war sicherlich ein Fehler.
(Denjenigen, die einwenden, dass Dot-Dateien einen Zweck erfüllen, stelle ich das nicht in Abrede, sondern entgegne, dass es die Dateien sind, die diesen Zweck erfüllen, nicht die Konvention für ihre Namen. Sie könnten genauso gut in $HOME/cfg oder $HOME/lib stehen, was wir in Plan 9 getan haben, wo es keine Dot-Dateien gab. Man kann daraus lernen.)
So verstehe ich es:
Als diese „dot files“ unsichtbar wurden, sprangen andere Programmierer ein und entschieden, dass der Ort, an dem ihre wertvollen Konfigurationsdaten gespeichert werden sollten, in dot files zusammen mit den .
und ..
files war. Da die Dateihierarchie am Anfang noch nicht sehr weit entwickelt war, landeten sie alle im $HOME-Verzeichnis, und ziemlich schnell wurde dies zu einer ungeschriebenen Konvention, an die sich alle hielten und den Schritten der Gründerväter folgten.
Dies führte zu Monstrositäten wie:
Referenz :
Linux-Geschichte: Wie aus Dot-Dateien versteckte Dateien wurden