Для начала у меня следующая структура каталогов
~/a/bin
~/a/src -> /home/user/b/sync/src
Я создал символическую ссылку
cd ~/a/src
ln -s ../bin bin-xyz
теперь bin-xyz — это битая ссылка, и нет возможности перейти в нее с помощью cd.
Что я ищу?
Как создать симлинк внутри симлинкованной папки так, чтобы относительный путь не был нарушен. Например,
cd ~/a/src/bin-xyz
или
cd ~/b/sync/src/bin-xyz
должно работать при условии, что в ~/a/ или ~b/sync/ есть каталог bin
Почему я это ищу?
Я синхронизирую ~/b/sync/src между машинами, где ~/a/ — это мое рабочее пространство на обеих машинах, но имя пользователя на машинах отличается. Поэтому наличие относительного пути, который работает, означает для меня более простой рабочий процесс.
Для синхронизации я использую BitTorent Sync.
Спасибо :-)
решение1
теперь bin-xyz — нерабочая ссылка
Причина этого, надеюсь, очевидна: либо ..
нужно ссылаться надействительныйродительский каталог, иначе это было бы совершенно неоднозначно.
Так как ~/a/src -> /home/user/b/sync/src
, я предполагаю с этим как $PWD
и ln -s ../bin bin-xyz
вы пытаетесь ссылаться /home/user/b/sync/src/bin-xyz
на /home/user/a/sync/bin
. В этом случае вам следует просто использовать абсолютные пути:
ln -s /home/user/a/sync/bin /home/user/b/sync/src/bin-xyz
Причина, по которой ln
не заполняет ..
пробелы в этом отношении, заключается в том, что он, в отличие от вашей текущей оболочки, не отслеживал ваши перемещения и не имеет возможности узнать, что ..
вы имели в виду что-то иное, чем реальный родительский каталог.
В вашем вопросе (может быть?) подразумевается, что вы не можете этого сделать, потому что на самом деле задействованы две разные системы. Это подразумевает, что либо смонтирован сетевой ресурс, либо вы используете одно и то же блочное устройство с обоими, что в свою очередь подразумеваетпроблема XY-- не могу решить этот вопрос без дополнительных подробностей.