J'ai construit mon application pour différentes architectures et je voudrais créer un "lien symbolique dynamique" qui m'amène à la bonne version basée sur une variable.
Si la machine à laquelle je suis actuellement connecté est x86, le lien symbolique devrait m'amener à cette version.
Un exemple moqué de ce que je veux faire:
$ 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
Est-ce possible?
Je sais que je peux utiliser cd $(uname -i)
, mais je veux quelque chose de plus simple.
Réponses:
Cette fonctionnalité est prise en charge par DragonFly BSD , où elle est appelée variantes de liens symboliques . Voir
man varsym
etman ln
pour plus de détails.la source
Les liens symboliques sont statiques: le système de fichiers stocke simplement une chaîne et les accès au lien symbolique sont redirigés vers le fichier dont le nom (par rapport à l'emplacement du lien symbolique) est cette chaîne.
Il serait simple d'écrire un système de fichiers FUSE exposant de tels liens dynamiques, mais je n'en connais pas de existant.
la source
Je suppose que ce sont des binaires, donc je le ferais avec un évaluateur de variable PATH que symlink.
PATH=$PATH:/base/$ARCH/bin
.Si vous utilisez un outil comme cfengine ou marionnette. Un lien symbolique vers le répertoire approprié peut être créé en fonction de l'architecture du système.
la source
Si vous souhaitez simplement saisir une syntaxe plus simple que:
Vous pouvez le mettre dans une variable comme:
dans votre script de connexion, vous pouvez donc simplement faire
Quand tu veux cd
la source
le lien symbolique est essentiellement un fichier avec un drapeau spécial qui contient un chemin, et ce chemin est interprété tel quel, vous ne pouvez donc pas créer un lien symbolique pour pointer vers d'autres emplacements de cette manière. Mais vous pouvez toujours écrire un script qui exécutera une construction appropriée.
la source