GNU/Linux >> Linux Esercitazione >  >> Linux

Variabili d'ambiente nei collegamenti simbolici

Anche se i collegamenti simbolici sono risolti dal kernel, puoi comunque eseguire un trucco LD_PRELOAD, avvolgendo tutte le funzioni libc che accettano percorsi ed espandono qualsiasi componente $XYZ nella stringa restituita da 'readlink' (espansione parametro). Quindi inserisci il percorso espanso nella funzione di cui è stato eseguito il wrapping. Devi sfuggire al percorso di destinazione dall'espansione della shell durante la creazione del collegamento, come suggerisce jaztik.

Poiché la libreria inserita ha pieno accesso all'ambiente degli utenti, ciò soddisferà tutte le aspettative dell'OP.


sì. nessun problema. in realtà non utilizzerai effettivamente la variabile $HOME nel tuo collegamento, quindi non funzionerà con soluzioni intelligenti per gruppi di utenti, ad esempio. La variabile viene tradotta dalla shell durante l'esecuzione del comando e il contenuto della variabile viene utilizzato nel collegamento.

ln -s ~/test /tmp/test 

viene espanso in

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

Ah. e funzioneranno solo le variabili d'ambiente della persona che chiama ln. Non è possibile memorizzare variabili di ambiente di altre persone nel collegamento. Le variabili vengono espanse prima di chiamare il comando.


Se non vuoi espandere la variabile nel link, puoi racchiuderla tra virgolette singole

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

Questo darebbe,

newname -> $HOME/file/or/folder

piuttosto che espanderlo nella tua $HOME impostata localmente. Come descritto in altre risposte, non lo espanderà affatto. Quindi puoi ad es. usalo per creare un collegamento simbolico a un file all'interno del letterale $HOME cartella.

[Nota che questo dipende dal sistema - non tutti i sistemi supportano i collegamenti simbolici delle varianti]


I collegamenti simbolici sono gestiti dal kernel e il kernel non si preoccupa delle variabili d'ambiente. Quindi no.


Linux
  1. Come creare collegamenti rigidi e simbolici in Linux

  2. Comportamento di cd/bash sui collegamenti simbolici

  3. Imposta un ambiente temporaneo ($PATH)

  4. Come annullare l'impostazione di molte variabili d'ambiente

  5. Troppi livelli di collegamenti simbolici

Come creare collegamenti simbolici in Linux

Comando Ln in Linux (Crea collegamenti simbolici)

Come rimuovere (eliminare) i collegamenti simbolici in Linux

Guida all'aggiunta di collegamenti simbolici Linux

Che cosa sono i collegamenti simbolici in Linux? Come creare collegamenti simbolici?

Variabili d'ambiente Linux