GNU/Linux >> Tutoriales Linux >  >> Linux

Variables de entorno en enlaces simbólicos

A pesar de que los enlaces simbólicos son resueltos por el kernel, aún podría hacer un truco LD_PRELOAD, envolviendo todas las funciones libc que toman nombres de ruta y expanden cualquier componente $XYZ en la cadena devuelta por 'readlink' (expansión de parámetros). Luego, alimente la ruta expandida a la función envuelta. Tienes que escapar de la ruta de destino de la expansión de shell al crear el enlace, como sugiere jaztik.

Como la biblioteca inyectada tiene acceso total al entorno de los usuarios, cumplirá todas las expectativas del OP.


sí. No hay problema. en realidad, no utilizará la variable $HOME en su enlace, por lo que no funcionará con soluciones inteligentes para grupos de usuarios, por ejemplo. El shell traduce la variable al ejecutar el comando, y el contenido de la variable se usa en el enlace.

ln -s ~/test /tmp/test 

se expande a

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

ah y solo funcionarán las variables de entorno de la persona que llama ln. No puede almacenar variables de entorno de otras personas en el enlace. Las variables se expanden antes de llamar al comando.


Si no desea expandir la variable en el enlace, puede poner comillas simples alrededor,

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

Esto daría,

newname -> $HOME/file/or/folder

en lugar de expandirlo a su $HOME configurado localmente. Como se describe en otras respuestas, no lo expandirá en absoluto. Entonces puedes, p. úselo para enlazar a un archivo dentro del literal $HOME carpeta.

[Tenga en cuenta que esto depende del sistema:no todos los sistemas admiten enlaces simbólicos variantes]


Los enlaces simbólicos son manejados por el kernel, y al kernel no le importan las variables de entorno. Entonces, no.


Linux
  1. Cómo crear enlaces duros y simbólicos en Linux

  2. ¿Cómo copiar enlaces simbólicos?

  3. Configuración de variables de entorno de Linux

  4. Cómo leer las variables de entorno de un proceso

  5. Demasiados niveles de enlaces simbólicos

Cómo crear enlaces simbólicos en Linux

Comando Ln en Linux (Crear enlaces simbólicos)

Cómo quitar (eliminar) enlaces simbólicos en Linux

Guía para agregar enlaces simbólicos de Linux

¿Qué son los enlaces simbólicos en Linux? ¿Cómo crear enlaces simbólicos?

Variables de entorno de Linux