A saída do caminho real inclui a entrada

9

Eu uso o comando realpath , mas ele sempre adiciona a entrada original no final do caminho:

$ pwd
/homes/yosefkl
$ realpath yosefkl
/homes/yosefkl/yosefkl
    
por Josef Klimuk 27.12.2017 / 10:44

3 respostas

17

Você deu a realpath um caminho relativo a um arquivo no diretório atual.

O arquivo (que pode ser um diretório) pode ou não existir. realpath não se importa por padrão. Ele relata o caminho, independentemente de seu último elemento existir.

Se você deseja que ele apenas relate caminhos que existem, use o sinalizador -e :

zanna@toaster:~/playground$ realpath playground
/home/zanna/playground/playground
zanna@toaster:~/playground$ realpath ~/playground
/home/zanna/playground
zanna@toaster:~/playground$ realpath -e playground
realpath: playground: No such file or directory
    
por Zanna 27.12.2017 / 10:51
11

Isso porque você está dando um caminho que não existe, então simplesmente imprime o diretório atual e o que quer que você tenha dado, assumindo que esse seria o caminho. Observe que a página man especifica isso:

  

Imprima o nome do arquivo absoluto resolvido; todos, exceto o último componente, devem existir

Por isso, permite a execução com um destino inexistente. Para ilustrar, considere estes exemplos:

$ pwd
/home
$ ls
lost+found  terdon
$ realpath terdon
/home/terdon
$ realpath nonExistentDir
/home/nonExistentDir

Ou para duplicar o que você fez:

$ pwd
/home/terdon
$ realpath terdon
/home/terdon/terdon
    
por terdon 27.12.2017 / 10:52
5

Não, isso indica apenas que o caminho para o arquivo (provavelmente inexistente) yosefkl localizado no diretório atual ( /homes/yosefkl ) é /homes/yosefkl/yosefkl . Experimente

realpath "$PWD"
    
por choroba 27.12.2017 / 10:51

Tags