Я успешно и не успешно созданный символьная ссылка:
У меня есть два каталога
~/foo
и
~/bar
Теперь мне назвали файл baz.txt
в этом пути ~/foo
. Моя цель состояла в том, чтобы создать символьную ссылку в ~/bar
таким образом, я могу получить доступ к нему оттуда также.
Со следующей командой, которую я выполнил в каталоге ~/foo
:
ln -s baz.txt ~/bar
Я получил плохую символьную ссылку, которая получила отмеченный красный. Результаты не состояли в том, как я ожидал, и я попробовал что-то еще, что в конечном счете удалось для меня.
Я выполнил эту команду в пути ~/bar
ln -s ~/foo/baz.txt .
Интересно теперь, почему мой первый подход не работал, так как я сослался на свой файл к каталогу, где я хочу иметь свою символьную ссылку. Это смотрит на меня как, я сделал то же самое в обеих командах только в различных каталогах.
Проблема здесь является абсолютной по сравнению с относительными путями. Полный путь /bar/foo/file.txt
и относительный путь ./file.txt
. Когда Вы работаете ln -s foo.txt /home/ubuntu/central_addcontent/program/
, это эквивалентно выполнению
ln -s ./foo.txt /home/ubuntu/central_addcontent/program/
Это создаст названный файл foo.txt
это указывает ./foo.txt
в целевом каталоге. Это более просто проиллюстрировать с примером, дающим другое название ссылки:
$ ln -s foo.txt /home/terdon/central_addcontent/program/bar.txt
$ ls -l /home/terdon/central_addcontent/program/
total 0
lrwxrwxrwx 1 terdon terdon 7 Nov 25 11:25 bar.txt -> foo.txt
Поскольку Вы видите выше, bar.txt
указывает /home/terdon/central_addcontent/program/foo.txt
и тот файл не существует. Чтобы сделать это правильно, можно или использовать полный путь foo.txt
или используйте относительный путь, но относительно целевого каталога. Оба из них будут работать:
$ ln -s ~/central_app/program/foo.txt ~/central_addcontent/program/
$ l /home/terdon/central_addcontent/program/
total 0
lrwxrwxrwx 1 terdon terdon 40 Nov 25 11:28 foo.txt -> /home/terdon/central_app/program/foo.txt
Или
$ ln -s ../../central_app/program/foo.txt ~/central_addcontent/program/
$ ls -l /home/terdon/central_addcontent/program/
total 0
lrwxrwxrwx 1 terdon terdon 33 Nov 25 11:29 foo.txt -> ../../central_app/program/foo.txt
Во втором примере я использовал относительный путь, но относительно цели ссылки.