Existem muitos motivos para links simbólicos quebrados:
- Um link foi criado para um destino que não existe mais.
Resolução: remova o link simbólico quebrado. - Um link foi criado para um destino que foi movido. Ou é um link relativo que foi movido em relação ao seu alvo. (Não insinuar que os links simbólicos relativos são uma má ideia - muito pelo contrário: os links simbólicos absolutos são mais propensos a ficar obsoletos porque o alvo foi movido.)
Resolução: encontre o destino pretendido e corrija o link. - Ocorreu um erro ao criar o link.
Resolução: encontre o destino pretendido e corrija o link. - O link é para um arquivo que está em um disco removível, sistema de arquivos de rede ou outra área de armazenamento que não está montada no momento. Resolução: nenhum, o link não está quebrado o tempo todo. O link funcionará quando a área de armazenamento estiver montada.
- O link é para um arquivo que existe apenas parte do tempo, por design. Por exemplo, o arquivo é a saída em cache de um processo, que é excluído quando as informações ficam obsoletas, mas apenas recriadas mediante solicitação explícita. Ou o link é para uma caixa de entrada que é excluída quando vazia. Ou o link é para um arquivo de dispositivo que está presente apenas quando o periférico correspondente está conectado. Resolução: nenhum, o link não está quebrado o tempo todo.
- O link só é válido em uma hierarquia de armazenamento diferente. Por exemplo, ele é válido apenas em uma cadeia chroot ou é exportado por um servidor NFS e é válido apenas no servidor ou em alguns de seus clientes. Resolução: nenhum, o link não está quebrado em todos os lugares.
- O link está quebrado para você, porque você não tem permissão para percorrer um diretório para alcançar o alvo, mas ele não é quebrado para usuários com privilégios apropriados.
Resolução: nenhum, o link não está quebrado para todos. - O link é usado para armazenar informações, como no exemplo de bloqueio do Firefox citado por vinc17 . Uma razão para fazer isso dessa maneira é que é mais fácil preencher um link simbólico atomicamente - não há outra maneira, enquanto que preencher um arquivo atomicamente é mais complexo: você precisa criar o conteúdo do arquivo com um nome temporário, movê-lo para o lugar e lidar com arquivos temporários obsoletos deixados por um acidente. Outra razão é que os links simbólicos são normalmente armazenados diretamente dentro de seu inode em alguns sistemas de arquivos, o que torna a leitura mais rápida do que a leitura do conteúdo de um arquivo.
Resolução: nenhuma Neste caso, remover o link seria prejudicial.
Se você puder determinar que um link simbólico se enquadra na primeira categoria, então, claro, vá em frente e exclua-o. Caso contrário, abstenha-se.
Um programa que atravessa diretórios de forma recursiva e se preocupa com o conteúdo do arquivo normalmente deve ignorar links simbólicos quebrados.