Невозможно изменить назначение символической ссылки

19

Я хочу изменить назначение существующей символической ссылки, не удаляя ссылку или старое назначение.

Я ранее создал символическую ссылку на каталог, например:

$ cd /usr/lib/jvm/

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:22  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07

$ sudo ln -s jdk1.7.0_04 oracle-jdk-7

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:22  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07
lrwxrwxrwx 1 root root   12 May 11 11:27  oracle-jdk-7 -> jdk1.7.0_04/

Теперь я хочу изменить это, чтобы ссылаться на другой каталог:

$ sudo ln --force -s jdk1.7.0_07 oracle-jdk-7

Но это не работает без ошибок:

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:36  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07
lrwxrwxrwx 1 root root   12 May 11 11:27  oracle-jdk-7 -> jdk1.7.0_04/

Любая помощь?

    
задан Seyed Mohammad 10.09.2012 в 18:11
источник

1 ответ

27

Чтобы создать символическую ссылку в каталог , используйте параметр «n»:

 ln -sfn DESTINATION_DIRECTORY LINK_NAME
   "DESTINATION_DIRECTORY" is the name for target link;
   "LINK_NAME" is the name of the target link.
   The 'f' parameter means to replace the existing link (ie, delete it first).

Параметр 'n' немного сложнее. Я полагаю, что ваша команда могла создать ссылку на jdk1.7.0_07 внутри каталога jdk1.7.0_04 , по ссылке oracle-jdk-7 вместо замены ссылки. Если это так, вы должны удалить ссылку, чтобы избежать путаницы.

    
ответ дан Marty Fried 10.09.2012 в 18:26
источник