Das Ziel der symbolischen Verknüpfung kann nicht geändert werden

21

Ich möchte das Ziel eines vorhandenen symbolischen Links ändern, ohne den Link oder das alte Ziel zu entfernen.

Ich habe zuvor einen symbolischen Link zu einem Verzeichnis wie folgt erstellt:

$ 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/

Jetzt möchte ich das ändern, um auf das andere Verzeichnis zu verlinken:

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

Aber es funktioniert nicht ohne Fehler:

$ 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/

Irgendeine Hilfe ?

Seyed Mohammad
quelle
Vielleicht ist dies ein kleines Detail, aber es sieht so aus, als ob der tatsächliche Befehl, den Sie ausgeführt haben, ist sudo ln -s jdk1.7.0_04/ oracle-jdk-7. Beachten Sie den Schrägstrich danach 04.
wjandrea

Antworten:

31

Verwenden Sie die Option 'n', um einen symbolischen Link zu einem Verzeichnis zu erstellen :

ln -sfn DESTINATION_DIRECTORY LINK_NAME
  • DESTINATION_DIRECTORY ist der Name des Linkziels;
  • LINK_NAME ist der Name des Links.
  • Die fOption bedeutet, den vorhandenen Link zu ersetzen (dh ihn zuerst zu löschen).

Die nOption ist etwas kompliziert. Ich glaube, Ihr Befehl hat möglicherweise über den Link einen Link zum jdk1.7.0_07Verzeichnis erstellt jdk1.7.0_04, oracle-jdk-7anstatt den Link zu ersetzen. In diesem Fall sollten Sie den Link löschen, um Verwirrung zu vermeiden.

Marty Fried
quelle
Sie können auch Option T, das heißtln -sfT TARGET LINK_NAME
wjandrea