Есть ли способ создать мягкую ссылку, используя относительный путь? (не относительный к домашнему каталогу и не абсолютный)

Есть ли способ создать мягкую ссылку, используя относительный путь? (не относительный к домашнему каталогу и не абсолютный)

Я пробовал использовать относительный pwd, но это не работает.

Мой текущий пароль отличается от целевого пути и исходного пути (откуда нужно создать ссылку).

Я не знаю домашний каталог, поэтому не могу использовать относительный путь к домашнему. Абсолютный путь не требуется.

Как создать мягкую ссылку, используя относительный путь?

решение1

Относительная символическая ссылка относится к родительскому каталогу и не зависит от текущего каталога любого процесса или домашнего каталога любого пользователя.

Например, если /some/dir/linkэто символическая ссылка на ../foo/bar, то это символическая ссылка на /some/dir/../foo/bar( /some/foo/barесли /some/dirсам по себе не является символической ссылкой), независимо от того, какой у вас текущий или домашний каталог.

Если вы хотите создать новую символическую ссылку на файл относительно текущего каталога (например, на bin/lsфайл в вашем текущем /home/stephaneкаталоге), то вы можете сделать (в оболочках типа POSIX или fish):

ln -s -- "$PWD/bin/ls" /some/dir/link

Что создаст абсолютную символическую ссылку (на /home/stephane/bin/ls). Чтобы создать относительную символическую ссылку, вам понадобится:

ln -s ../../home/stephane/bin/ls /some/dir/link

(предполагается /some, что и /some/dirсами по себе не являются символическими ссылками)

В GNU lnесть -rопция, которая поможет вам вычислить этот путь:

ln -rs bin/ls /some/dir/link

(что создаст ту же символическую ссылку на ../../home/stephane/bin/ls).

решение2

Вы можете сделать символическую ссылку, используя относительный путь

например (вы хотите создать символическую ссылку из папки bb, которая расположена в ../../bbтекущем рабочем каталоге, наmylink

ln -s ../../bb/ mylink

$ ls -lsa mylink
0 lrwxrwxrwx 1 user user 9 Apr 18 15:51 mylink -> ../../bb/

Другой пример, где mylink находится в связанной папке дляpwd

mkdir ../../tst
$ ln -s ../../bb/ ../../tst/mylink
$ ls -lsa ../../tst/mylink
0 lrwxrwxrwx 1 user user 9 Apr 18 16:08 ../../tst/mylink -> ../../bb/

Связанный контент