Мне нужна символическая ссылка, которая разрешается относительно каталога, в котором она находится. Какая команда используется для создания такой вещи?
linux
command-line
symbolic-link
Иеремия Роуз
источник
источник
ln -s ../some/other/file /some/dir/linkname
ln -s ./file linkname
поскольку.
ссылается на текущий каталог.ln -s somedir/original-dir link-name
не работает. Он создает каталог с именемlink-name
, содержащим недопустимую ссылку. Команда, которая работает этоln -sr somedir/original-dir link-name
Недавние версии GNU coreutils 'ln (> = 8.16) поддерживают опцию
--relative
(или-r
), которая означает, что вы можете вызыватьln -s
с 2 абсолютными или относительными (по отношению к вашему рабочему каталогу) путями, и она определит правильный относительный путь, который должен быть написано в символическую ссылку.источник
-r
опция полезна, когда вы выполняете кросс-компиляцию и вам нужны абсолютные пути на хосте сборки, но относительные пути на цели.ln -r -s targetfile myalias
может помочь вам это исправитьЧто вам нужно понять, так это то, что символическая ссылка больше похожа на текстовый файл, чем на запись каталога, которая содержит файл. Так что если вы
то это очень похоже на
Система не заботится,
/file/../poo
существует ли она вообще, это всего лишь фрагмент текста, который помещается в символическую ссылку. Когда что-то пытается открыть символическую ссылку, тогда система пытается разрешить это.Если вы используете оболочку с дополнением имени файла, эта функция может сбить с толку, позволив вам завершить имя файла относительно вашего текущего рабочего каталога, даже если вы в конечном итоге используете его в качестве цели символической ссылки в совершенно другом каталоге.
источник
<
изменения как система распределенной памяти. Конечно,<
в этом каталоге нет файла с именем , это просто дешевый способ создания очень маленькой файловой вещи, которая обладает некоторыми привлекательными свойствами по сравнению с обычным текстовым файлом на этой конкретной платформе.Относительные ссылки были сложными для меня на OS X, то есть
оба не работали (что-то было создано, но это не каталог). Я создал нужную ссылку, используя абсолютные пути .
источник
ln -s Dropbox/git/codyhess/bin ~/bin
Я просто хотел дополнительно объяснить, как создать символическую ссылку, используя относительные пути (с подробным примером).
Как упоминал Игнасио Васкес-Абрамс в комментариях, вы должны указать расположение файла / папки относительно того, где будет создана символическая ссылка, а не относительно вашего текущего каталога.
ПРИМЕР
Вы находитесь
/usr/share/nginx/html/_src/learn
Вы создадите символическую ссылкуcoding
в/usr/share/nginx/html
Создать относительную символическую ссылку (теория):
Создать фактическую относительную символическую ссылку:
Больше информации (тот же пример)
источник