Korzystam z realpathpolecenia, ale zawsze dodaje oryginalne dane wejściowe na końcu ścieżki:
$ pwd
/homes/yosefkl
$ realpath yosefkl
/homes/yosefkl/yosefkl
Korzystam z realpathpolecenia, ale zawsze dodaje oryginalne dane wejściowe na końcu ścieżki:
$ pwd
/homes/yosefkl
$ realpath yosefkl
/homes/yosefkl/yosefkl
Odpowiedzi:
Dałeś realpathwzględną ścieżkę do pliku w bieżącym katalogu.
Plik (który może być katalogiem) może istnieć lub nie. realpathdomyślnie to nie obchodzi. Podaje ścieżkę niezależnie od tego, czy istnieje jej ostatni element.
Jeśli chcesz, aby raportował tylko istniejące ścieżki, użyj -eflagi:
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
To dlatego, że podajesz ścieżkę, która nie istnieje, więc po prostu drukuje bieżący katalog i cokolwiek, co mu podałeś, zakładając, że będzie to ścieżka. Zauważ, że strona podręcznika określa, że:
Wydrukuj rozstrzygniętą bezwzględną nazwę pliku; wszystkie oprócz ostatniego komponentu muszą istnieć
Pozwala to na wykonanie z nieistniejącym celem. Aby to zilustrować, rozważ następujące przykłady:
$ pwd
/home
$ ls
lost+found terdon
$ realpath terdon
/home/terdon
$ realpath nonExistentDir
/home/nonExistentDir
Lub, aby powielić to, co zrobiłeś:
$ pwd
/home/terdon
$ realpath terdon
/home/terdon/terdon
realpath .