Dynamiczne dowiązania symboliczne

10

Zbudowałem swoją aplikację dla różnych architektur i chciałbym utworzyć „dynamiczne dowiązanie symboliczne”, które zabierze mnie do właściwej wersji opartej na zmiennej.

Jeśli komputer, na którym aktualnie jestem zalogowany, to x86, wówczas dowiązanie symboliczne powinno zabrać mnie do tej kompilacji.

Szydzili przykładem tego, co chcę zrobić:

$ 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

czy to możliwe?

Wiem, że mogę korzystać cd $(uname -i), ale chcę czegoś prostszego.

dogbane
źródło
Czy znasz OpenAFS? Ponieważ używa @sys dokładnie w ten sposób, nawet używając „@sys”. Jeśli tak, czy szukasz alternatywy dla OpenAFS?
jsbillings
@jsbilling Chciałbym wiedzieć, czy jest to możliwe w standardowym systemie plików, bez AFS. Dawno temu pracowałem nad AFS i mogłem to zrobić, dlatego zapytałem.
dogbane
Tak myślałem. Nie znam żadnego innego systemu plików, który ma „magiczne” dowiązania symboliczne inne niż ustawienie vfs.generic.magiclinks NetBSD. ( daemon-systems.org/man/symlink.7.html )
jsbillings
Istnieją takie środowiska dla np. Ruby i Perl, dzięki czemu możesz wybrać wersję, która ma być używana podczas testowania. Inspirację możesz znaleźć na stronie rvm.io/rubies .
Jenny D.

Odpowiedzi:

2

Dowiązania symboliczne są statyczne: system plików po prostu przechowuje ciąg znaków, a dostęp do łącza symbolicznego jest przekierowywany do pliku, którego nazwa (w stosunku do położenia dowiązania symbolicznego) jest tym ciągiem.

Łatwo byłoby napisać system plików FUSE pokazujący takie dynamiczne dowiązania symboliczne, ale nie wiem o istniejącym.

Gilles „SO- przestań być zły”
źródło
2

Zakładam, że to pliki binarne, więc zrobiłbym to ze zmienną PATH rater niż symlink.

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

Jeśli używasz narzędzia takiego jak cfengine lub marionetka. W oparciu o architekturę systemu można utworzyć dowiązanie symboliczne do odpowiedniego katalogu.

BillThor
źródło
1

Jeśli chcesz tylko prostszą składnię niż:

cd $(uname -i)

Możesz umieścić go w zmiennej takiej jak:

 s=`uname -i` 

w skrypcie logowania, więc możesz to zrobić

 cd $s

Kiedy chcesz cd

bdk
źródło
0

dowiązanie symboliczne jest zasadniczo plikiem ze specjalną flagą, który zawiera pewną ścieżkę, a ścieżka ta jest interpretowana w taki sposób, że nie można utworzyć jednego dowiązania symbolicznego, aby wskazywał w ten sposób inne lokalizacje. Ale nadal możesz napisać skrypt, który uruchomi odpowiednią kompilację.

gelraen
źródło