realpath -L vs -P

1

Do manual do coreutils

-L --logical Symbolic links are resolved in the specified file names, but they are resolved after any subsequent .. components are processed.

-P --physical Symbolic links are resolved in the specified file names, and they are resolved before any subsequent .. components are processed. This is the default mode of operation.

Estou correto em afirmar que a diferença entre as duas opções está na ordem de processamento de links simbólicos e processamento .. ?

Você poderia explicar como as duas opções fazem diferença e talvez forneça alguns exemplos?

Obrigado.

    
por Tim 05.07.2016 / 00:49

1 resposta

3

Sim, a diferença está na ordem de processamento .. e links simbólicos.

Veja um exemplo de como isso pode fazer a diferença. Eu tenho um disco externo montado em /root/Archives e um link simbólico apontando para ele da minha casa:

$ pwd
/home/katsura

$ ls -ld Archives
lrwxrwxrwx 1 root root 14 Oct 23  2013 Archives -> /root/Archives

realpath resolve o link simbólico:

$ realpath Archives
/root/Archives

$ realpath -L Archives
/root/Archives

No entanto:

$ realpath Archives/../foo
/root/foo

$ realpath -L Archives/../foo
/home/katsura/foo

Sem opção (ou com -P ), o link simbólico é resolvido primeiro, então Archives se torna /root/Archives , então .. é aplicado.

Com -L o .. é aplicado primeiro, então Archives/.. se torna /home/katsura , então os links simbólicos restantes são resolvidos. Como não há mais links simbólicos, o resultado é apenas /home/katsura .

    
por 05.07.2016 / 06:31