He creado mi aplicación para diferentes arquitecturas y me gustaría crear un "enlace simbólico dinámico" que me lleve a la versión correcta basada en una variable.
Si la máquina en la que estoy conectado actualmente es x86, entonces el enlace simbólico debería llevarme a esa compilación.
Un ejemplo burlado de lo que quiero hacer:
$ uname -i
x86_64
$ ls -ltr
lrwxr-xr-x 1 dogbane gg 4 Feb 16 15:40 mylink -> @sys/
drwxrwxr-x 2 dogbane gg 2048 Feb 16 15:40 x86_64/
drwxrwxr-x 2 dogbane gg 2048 Feb 16 15:40 i386/
$ cd mylink
$ pwd -P
~/x86_64
es posible?
Sé que puedo usar cd $(uname -i)
, pero quiero algo más simple.
Respuestas:
Esta característica es compatible con DragonFly BSD , donde se denomina enlaces simbólicos variantes . Ver
man varsym
yman ln
para más detalles.fuente
Los enlaces simbólicos son estáticos: el sistema de archivos simplemente almacena una cadena y los accesos al enlace simbólico se redirigen al archivo cuyo nombre (relativo a la ubicación del enlace simbólico) es esa cadena.
Sería simple escribir un sistema de archivos FUSE que exponga dichos enlaces simbólicos dinámicos, pero no conozco uno existente.
fuente
Supongo que esto es binarios, por lo que lo haría con un evaluador variable PATH que el enlace simbólico.
PATH=$PATH:/base/$ARCH/bin
.Si está utilizando una herramienta como cfengine o puppet. Se puede crear un enlace simbólico al directorio apropiado en función de la arquitectura del sistema.
fuente
Si solo desea escribir una sintaxis más simple que:
Podrías ponerlo en una variable como:
en su secuencia de comandos de inicio de sesión, para que pueda hacer
Cuando quieres cd
fuente
el enlace simbólico es esencialmente un archivo con un indicador especial que contiene alguna ruta, y esta ruta se interpreta como está, por lo que no puede hacer que un enlace simbólico apunte a otras ubicaciones de esa manera. Pero aún puede escribir un script que ejecute una compilación adecuada.
fuente