Não é possível alterar o destino do link simbólico

20

Eu quero alterar o destino de um link simbólico existente, sem remover o link ou o destino antigo.

Eu criei anteriormente um link simbólico para um diretório como o seguinte:

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

Agora eu quero mudar isso, para vincular ao outro diretório:

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

Mas não funciona sem erros:

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

Alguma ajuda?

    
por Seyed Mohammad 10.09.2012 / 18:11

1 resposta

28

Para criar um link simbólico para um diretório , use a opção 'n':

ln -sfn DESTINATION_DIRECTORY LINK_NAME
  • DESTINATION_DIRECTORY é o nome do destino do link;
  • LINK_NAME é o nome do link.
  • A opção f significa substituir o link existente (ou seja, excluí-lo primeiro).

A opção n é um pouco complicada. Acredito que seu comando possa ter criado um link para jdk1.7.0_07 dentro do diretório jdk1.7.0_04 , através do link oracle-jdk-7 , em vez de substituir o link. Nesse caso, você deve excluir o link para evitar confusão.

    
por Marty Fried 10.09.2012 / 18:26