Symlink-Fallback

Symlink-Fallback

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

~/overriddenzeigt eine Zusammenführung der Verzeichnisbäume unter ~/overridableund /media/external. Wenn eine Datei in beiden vorhanden ist, wird die aus /media/externalangezeigt.

Siehe auchUnion Mount unter Linux(wenn jemand antwortet…).

verwandte Informationen