Динамічні посилання


10

Я створив свій додаток для різних архітектур і хотів би створити "динамічне символьне посилання", яке приведе мене до правильної версії на основі змінної.

Якщо машина, на якій я зараз увійшов у систему, - x86, тоді посилання на симполіс повинно взяти мене до цієї збірки.

Знущалися приклад того , що я хочу зробити:

$ 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

Чи можливо це?

Я знаю, що можу використовувати cd $(uname -i), але хочу щось простіше.


Ви знайомі з OpenAFS? Тому що він використовує @sys саме таким чином, навіть використовуючи "@sys". Якщо так, чи шукаєте ви альтернативу OpenAFS?
jsbillings

@jsbilling Я хотів би знати, чи це можливо в стандартній файловій системі без AFS. Раніше я працював на АФУ і міг це робити, тому і запитав.
dogbane

Я так багато рахував. Я не знаю жодної іншої файлової системи, яка має "магічні" посилання, крім налаштування vfs.generic.magiclinks NetBSD. ( daemon-systems.org/man/symlink.7.html )
jsbillings

Існують такі середовища, як, наприклад, Ruby та Perl, так що ви можете вибрати, яку версію використовувати для тестування речей. Ви можете знайти щось натхнення на rvm.io/rubies .
Дженні Д

Відповіді:



2

Символічні посилання є статичними: файлова система просто зберігає рядок, а доступ до символьної посилання перенаправляється до файлу, ім'ям якого (відносно місця розташування символьної посилання) є цей рядок.

Було б просто написати файльну систему FUSE, що виявляє такі динамічні посилання, але я не знаю про існуючу.


2

Я припускаю, що це двійкові файли, тому я б це робив із змінним рейтингом PATH, ніж symlink.

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

Якщо ви використовуєте такий інструмент, як cfengine або лялька. Символьне посилання на відповідний каталог може бути створене на основі архітектури системи.


1

Якщо ви просто хочете ввести більш простий синтаксис, ніж:

cd $(uname -i)

Ви можете помістити його в змінну на зразок:

 s=`uname -i` 

у вашому скрипті для входу, так що ви можете просто зробити

 cd $s

Коли ви хочете CD


0

symlink - це по суті файл із спеціальним прапором, який містить деякий шлях, і цей шлях інтерпретується так, як є, тому ви не можете зробити одне символьне посилання таким чином, щоб вказувати на інші місця. Але ви все одно можете написати сценарій, який запустить відповідну збірку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.