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.


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.


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.


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


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ę.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.