GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Umgebungsvariablen in symbolischen Links

Obwohl die symbolischen Links vom Kernel aufgelöst werden, könnten Sie immer noch einen LD_PRELOAD-Trick anwenden, indem Sie alle libc-Funktionen umschließen, die Pfadnamen annehmen und alle $XYZ-Komponenten in der von 'readlink' zurückgegebenen Zeichenfolge erweitern (Parametererweiterung). Führen Sie dann den erweiterten Pfad der Wrapped-Funktion zu. Sie müssen den Zielpfad von der Shell-Erweiterung beim Erstellen des Links maskieren, wie jaztik vorschlägt.

Da die injizierte Bibliothek vollen Zugriff auf die Benutzerumgebung hat, wird dies alle Erwartungen des OP erfüllen.


Jawohl. Kein Problem. Tatsächlich werden Sie die $HOME-Variable in Ihrem Link nicht verwenden, sodass sie beispielsweise nicht mit intelligenten Lösungen für Benutzergruppen funktioniert. Die Variable wird beim Ausführen des Befehls von der Shell übersetzt und der Inhalt der Variable im Link verwendet.

ln -s ~/test /tmp/test 

wird zu

erweitert
/<path>/<to>/home/test -> /tmp/test

Ah. und nur die Umgebungsvariablen der Person, die ln aufruft, funktionieren. Sie können keine Umgebungsvariablen anderer Personen im Link speichern. Die Variablen werden vor Aufruf des Befehls expandiert.


Wenn Sie die Variable im Link nicht erweitern möchten, können Sie sie in einfache Anführungszeichen setzen,

ln -s '$HOME/file/or/folder' newname

Dies würde ergeben,

newname -> $HOME/file/or/folder

anstatt es auf Ihr lokal gesetztes $HOME erweitern zu lassen. Wie in anderen Antworten beschrieben, wird es überhaupt nicht erweitert. So können Sie z. Verwenden Sie es, um auf eine Datei innerhalb des Literals $HOME zu verlinken Ordner.

[Beachten Sie, dass dies systemabhängig ist - nicht alle Systeme unterstützen unterschiedliche Symlinks]


Symbolische Links werden vom Kernel gehandhabt, und der Kernel kümmert sich nicht um Umgebungsvariablen. Also nein.


Linux
  1. Auf Umgebungsvariablen prüfen

  2. Verhalten von cd/bash bei symbolischen Links

  3. Legen Sie eine temporäre Umgebung fest ($PATH)

  4. Wie kopiere ich symbolische Links?

  5. Festlegen von Linux-Umgebungsvariablen

So erstellen Sie symbolische Links in Linux

Ln-Befehl unter Linux (Symbolische Links erstellen)

So entfernen (löschen) Sie symbolische Links in Linux

Anleitung zum Hinzufügen symbolischer Linux-Links

Was sind symbolische Links in Linux? Wie erstellt man symbolische Links?

Linux-Umgebungsvariablen