Como alterar um link simbólico no OS X?


20

Como altero para onde um link simbólico aponta, sem excluir e criar um novo (com ln -s "/path/to/point/to" "/path/where/symlink/is")?

Quando tentei fazer isso com o link simbólico "Atual" do Java, o Java nem funcionava (pelo menos na linha de comando, dizia 'Falha de segmentação'), mas estava de volta ao normal quando restaurei o link simbólico "Atual" com o Time Máquina (mas depois descobri que deveria usar de /Applications/Utilities/Java Preferences.appqualquer maneira para alterar a versão java atual).

Respostas:


8
mkdir /path/where/newsymlink
ln -s /path/to/point/to /path/where/newsymlink/is
mv /path/where/newsymlink/is /path/where/symlink/
rmdir /path/where/newsymlink

No entanto, o utilitário Java Preferences muda mais do que apenas um link simbólico; você deve usá-lo para garantir que a versão Java seja alterada.


o comando mv não o renomeará ..?
Mk12 6/09/09

.. Eu tentei isso, apenas move o novo link simbólico para a pasta para a qual o antigo aponta.
Mk12 6/09/09

O primeiro comando cria o link simbólico que aponta para onde você deseja e o segundo comando substitui o ponteiro existente para o local antigo pelo ponteiro para o novo local. O mv é atômico, portanto o link simbólico sempre existirá.
Mark4o 7/09/09

.. Mas ainda não funciona .. move o novo ponteiro para a pasta para a qual o antigo aponta.
Mk12 7/09/09

/path/where/symlink/isé o link simbólico que você está alterando. O uso desses comandos mudará para o qual apontar /path/to/point/to. A pasta para a qual o link simbólico original aponta não é tocada.
Mark4o 7/09/09

29
ln -hfs newlocation existinglink

ou

ln -nfs newlocation existinglink

alterará o link existente para apontar para newlocation

(-n e -h são idênticos em operação)

De 'man ln'

-h Se o target_file ou o target_dir for um link simbólico, não o siga. Isso é mais útil com a opção -f, para substituir um link simbólico que pode apontar para um diretório.

-f Se o arquivo de destino já existir, desvincule-o para que o link possa ocorrer. (A opção -f substitui as opções -i anteriores.)

-s Cria um link simbólico


A -nfsversão também funciona no Linux, por isso é mais portátil se alguém se importa.
Cromax

10

Experimentar:

unlink /path/to/current/link
ln -s /path/to/target /path/to/symbolic/link

1
No meu final de 2013 MacBook Pro com Mavericks, eu tive que mudar os dois parâmetros: ln -s / path / to / / link simbólico / path / to / target
Marius Waldal

1

O comando ln não permite alterar links, apenas criar novos.


0

Você comparou as permissões nos links e nos destinos antes e depois de alterar o link? Você pode apenas precisar acompanhar os comandos chown e chmod adequados para fazê-lo funcionar.


Bem, eu nem sei como mudar isso, então não. E não sei o que chown e chmod fazem.
Mk12 6/09/09

2
chown altera a propriedade de um arquivo e / ou diretório. O chmod altera as permissões de um arquivo e / ou diretório. Estes são padrão em praticamente todas as plataformas unix. Muitos detalhes para explicar cada um aqui, então eu recomendaria pesquisar cada um deles nos tutoriais. Você também pode fazer "man chown" ou "man chmod" para ler o manual real do comando (pressione q para sair do manual).
churnd 6/09/09
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.