Porque o nome do arquivo na outra extremidade do link não é (ou pode não ser) o nome do arquivo no diretório que você está acessando com ls
.
Dois problemas com a exibição do nome do destino do link simbólico no lugar do nome do próprio link:
-
O arquivo não existe. Se o nome do destino do link simbólico for exibido na listagem do diretório, você pode ser levado a acreditar que esse é o nome do arquivo nesse diretório, mas não é. O nome do destino não é o nome pelo qual você acessa o arquivo nesse diretório; o arquivo com esse nome de arquivo não existe (nesse diretório) ou, na pior das hipóteses, pode ser um arquivo totalmente diferente (ou um diretório, ou qualquer outro) quando acessado por esse nome.
-
Os arquivos podem parecer ter nomes idênticos. Se o nome do destino do link simbólico for exibido, você poderá descobrir que é exatamente idêntico a outro nome de arquivo nesse diretório, o que não pode ser verdadeiro em um sistema Unix.
Nesses casos, isso causa confusão para os usuários e eles precisariam verificar a listagem usando ls
sem -L
, o que tornaria a opção -L
bastante inútil.
Isto ( não exibindo o nome do alvo) também é o comportamento especificado pelo POSIX, explicitamente:
Evaluate the file information and file type for all symbolic links (whether named on the command line or encountered in a file hierarchy) to be those of the file referenced by the link, and not the link itself; however,
ls
shall write the name of the link itself and not the file referenced by the link. When-L
is used with-l
, write the contents of symbolic links in the long format (see the STDOUT section).
Não há mais discussão sobre isso na seção Justificativa do POSIX ls
manual .