Símbolos dinâmicos

10

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

Se a máquina em que estou logado no momento, for x86, o link simbólico deverá me levar para essa compilação.

Um exemplo ridicularizado 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.

    
por dogbane 16.02.2011 / 16:53

5 respostas

4

Este recurso é suportado pelo DragonFly BSD , onde é chamado variante de links simbólicos . Veja man varsym e man ln para detalhes.

    
por 17.02.2011 / 22:33
2

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

Seria simples escrever um sistema de arquivos FUSE expondo tais links simbólicos dinâmicos, mas eu não sei de nenhum já existente.

    
por 16.02.2011 / 21:03
2

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

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

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

    
por 17.02.2011 / 00:24
1

Se você quiser apenas uma sintaxe mais simples para digitar:

cd $(uname -i)

Você poderia 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

    
por 16.02.2011 / 17:55
0

symlink é essencialmente um arquivo com um flag especial que contém algum caminho, e este caminho é interpretado como está, então você não pode fazer um symlink para apontar para outros locais dessa forma. Mas você ainda pode escrever um script que irá executar uma compilação apropriada.

    
por 16.02.2011 / 17:10

Tags