1

Создайте следующие каталоги:

parent/child

Перейдите к child и создайте файл с именем child (в моем случае это исполняемый файл, не уверен, что это изменит).

Мне нужно создать две ссылки "ссылка на исполняемый файл" в родительском. Я предполагал, что это будет работать:

ln -sf ./child ../child1
ln -sf ./child ../child2

Но это создает "ссылку на папку" (./child) в родительском каталоге.

Если я изменю это на:

ln -sf -t.. ./child child1
ln -sf -t.. ./child child2

Я получаю сообщение об ошибке: «ln: '../child': невозможно перезаписать каталог».

Если я делаю это из родительского каталога (что я не могу сделать, это часть рецепта Makefile):

ln -sf ./child/child ./child1
ln -sf ./child/child ./child2

Оно работает.

Обратите внимание, что я не могу изменить имена любых каталогов или файлов.

Как создать ссылки, если текущий каталог является дочерним?

1 ответ1

4

Это потому , что первый аргумент, TARGET, относительно к месту ссылки. Другими словами, вы создаете ссылки с именами parent/child1 и parent/child2, которые обе ссылаются на ./child. С точки зрения этих ссылок, ./child является каталогом. Вам нужно сделать ссылку на ./child/child. Или еще лучше, создайте абсолютную ссылку:

ln -sf /full/path/to/parent/child/child ../child1
ln -sf /full/path/to/parent/child/child ../child2

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .