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.
Odpowiedzi:
Ta funkcja jest obsługiwana przez DragonFly BSD , gdzie nazywane są wariantowymi dowiązaniami symbolicznymi . Zobacz
man varsym
iman ln
szczegóły.źródło
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.
źródło
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.
źródło
Jeśli chcesz tylko prostszą składnię niż:
Możesz umieścić go w zmiennej takiej jak:
w skrypcie logowania, więc możesz to zrobić
Kiedy chcesz cd
źródło
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ę.
źródło