Eu uso o realpathcomando, mas ele sempre adiciona a entrada original no final do caminho:
$ pwd
/homes/yosefkl
$ realpath yosefkl
/homes/yosefkl/yosefkl
Eu uso o realpathcomando, mas ele sempre adiciona a entrada original no final do caminho:
$ pwd
/homes/yosefkl
$ realpath yosefkl
/homes/yosefkl/yosefkl
Respostas:
Você forneceu realpathum caminho relativo para um arquivo no diretório atual.
O arquivo (que pode ser um diretório) pode ou não existir. realpathnão se importa por padrão. Ele relata o caminho, independentemente de seu último elemento existir.
Se você deseja que ele relate apenas os caminhos existentes, use o -esinalizador:
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
Isso porque você está dando a ele um caminho que não existe, então ele simplesmente imprime o diretório atual e o que você deu, assumindo que esse seria o caminho. Observe que a página do manual especifica que:
Imprima o nome absoluto do arquivo resolvido; tudo, exceto o último componente, deve 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
realpath .