Это на самом деле не терпит неудачу. Он создает вашу ссылку внутри данного каталога:
% mkdir dir_1 dir_2 % ln -s dir_1 symlink_dir % ln -s dir_2 symlink_dir % ls -l total 0 drwxr-xr-x 2 user group 60 Oct 16 12:47 dir_1 drwxr-xr-x 2 user group 40 Oct 16 12:47 dir_2 lrwxrwxrwx 1 user group 5 Oct 16 12:47 symlink_dir -> dir_1 % ls -l dir_1 total 0 lrwxrwxrwx 1 user group 5 Oct 16 12:47 dir_2 -> dir_2
Это поведение описано в man-странице:
ln [OPTION]... TARGET... DIRECTORY (3rd form) ... In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
Однако эта ссылка не может вернуться к dir_2, так как она не установлена должным образом. Это также ожидаемое поведение, и не должно провалиться. Из справочной страницы:
Символьные ссылки могут содержать произвольный текст; если позже разрешено, относительная ссылка интерпретируется относительно его родительского каталога.
Кстати, у меня так же работает даже с -sv
. Может быть, вы используете другую реализацию ln
. Вы уверены, что не используете -T
? Может быть, это установлено в вашем ~/.bashrc
/ ~/.zshrc
/ и т.д. Попробуй which ln
.