Este recurso é suportado pelo DragonFly BSD , onde é chamado variante de links simbólicos . Veja man varsym
e man ln
para detalhes.
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.
Este recurso é suportado pelo DragonFly BSD , onde é chamado variante de links simbólicos . Veja man varsym
e man ln
para detalhes.
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.
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.
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
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.
Tags symlink