Links simbólicos dinâmicos


10

Eu criei meu aplicativo para diferentes arquiteturas e gostaria de criar um "link simbólico dinâmico" que me leve à versão correta com base em uma variável.

Se a máquina na qual estou conectado atualmente é x86, o link simbólico deve me levar para essa compilação.

Um exemplo zombado do que eu quero fazer:

$ 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

Isso é possível?

Eu sei que posso usar cd $(uname -i), mas quero algo mais simples.


Você está familiarizado com o OpenAFS? Porque ele usa @sys exatamente dessa maneira, mesmo usando '@sys'. Se sim, você está procurando uma alternativa para o OpenAFS?
jsbillings

@jsbilling Eu gostaria de saber se isso é possível em um sistema de arquivos padrão, sem o AFS. Eu trabalhava no AFS há muito tempo e pude fazer isso, por isso perguntei.
22411 dogbane

Eu imaginei isso. Não conheço outro sistema de arquivos que possua links simbólicos 'mágicos' além da configuração vfs.generic.magiclinks do NetBSD. ( daemon-systems.org/man/symlink.7.html )
jsbillings

Existem ambientes para, por exemplo, Ruby e Perl, para que você possa escolher qual versão usar ao testar as coisas. Você pode encontrar alguma inspiração em rvm.io/rubies .
Jenny D

Respostas:



2

Os links simbólicos são estáticos: o sistema de arquivos apenas armazena uma string e os acessos ao link simbólico são redirecionados para o arquivo cujo nome (relativo à localização do link simbólico) é essa string.

Seria simples escrever um sistema de arquivos FUSE expondo links simbólicos dinâmicos, mas não conheço um existente.


2

Eu assumo que isso é binários, então eu faria isso com um avaliador de variável PATH do que com o link simbólico.

PATH=$PATH:/base/$ARCH/bin.

Se você estiver usando uma ferramenta como cfengine ou fantoche. Um link simbólico para o diretório apropriado pode ser criado com base na arquitetura do sistema.


1

Se você deseja apenas uma sintaxe mais simples, digite:

cd $(uname -i)

Você pode colocá-lo em uma variável como:

 s=`uname -i` 

no seu script de login, para que você possa fazer

 cd $s

Quando você quer cd


0

O link simbólico é essencialmente um arquivo com sinalizador especial que contém algum caminho, e esse caminho é interpretado como é, portanto, você não pode fazer um link simbólico apontar para outros locais dessa maneira. Mas você ainda pode escrever um script que executará a construção apropriada.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.