Gibt es eine Möglichkeit, symbolische Links mit Fallback auszustatten? Wenn das Ziel nicht gefunden wird, sollte ein anderes verwendet werden.
Ich möchte eine Konfigurationsdatei für ein Programm verwenden, die sich davon unterscheidet, ob ein Laufwerk gemountet ist oder nicht. Ich würde also einen symbolischen Link zu einer Konfiguration auf diesem bestimmten Laufwerk haben und wenn diese nicht gefunden wird, würde eine alternative verwendet.
Ich schätze, ich könnte ein Wrapper-Skript verwenden, das prüft, ob ein Laufwerk gemountet ist, eine Verknüpfung zu einer gewünschten Konfiguration herstellt und dann die Anwendung ausführt, aber ein Wrapper-Skript fühlt sich komisch an.
Antwort1
Bei Standard-Symlinks gibt es keine Möglichkeit. Sie zeigen immer auf einen einzigen Zielpfad.
In Ihrem speziellen Fall können Sie jedoch ausnutzen, wie ein Laufwerk ein Mount überschattet: Wenn Sie die Konfigurationsdatei auf /Pfad/zu/Mount/config.cnf verweisen, haben Sie eine Datei auf dem übergeordneten Dateisystem (wird verwendet, wenn das Mount nicht vorhanden ist) und eine auf dem gemounteten Dateisystem (wird verwendet, wenn das Mount vorhanden ist).
Aber das würde ich nicht empfehlen – zum einen ist es schwierig, beide gleichzeitig zu öffnen, um sie beispielsweise zu vergleichen. Ich persönlich würde ein Wrapper-Skript immer wieder vorziehen. Es gibt vielleicht auch programmspezifische Möglichkeiten, aber Sie haben das Programm nicht genannt.
Antwort2
Sie können einAnschlussmontagedafür. Das Anzeigen einer Datei, wenn sie an einem bestimmten Ort vorhanden ist, und einer anderen Datei, wenn die erste Auswahl nicht vorhanden war, ist der Sinn von Union Mounts. Symlinks helfen nicht, außer wenn die Datei an einem anderen Ort als dem Mount angezeigt werden soll.
mkdir ~/overridden
unionfs-fuse "/media/external:$HOME/overridable" ~/overridden
~/overridden
zeigt eine Zusammenführung der Verzeichnisbäume unter ~/overridable
und /media/external
. Wenn eine Datei in beiden vorhanden ist, wird die aus /media/external
angezeigt.
Siehe auchUnion Mount unter Linux(wenn jemand antwortet…).