Я использую realpathкоманду, но она всегда добавляет исходный ввод в конце пути:
$ pwd
/homes/yosefkl
$ realpath yosefkl
/homes/yosefkl/yosefkl
Я использую realpathкоманду, но она всегда добавляет исходный ввод в конце пути:
$ pwd
/homes/yosefkl
$ realpath yosefkl
/homes/yosefkl/yosefkl
Ответы:
Вы указали realpathотносительный путь к файлу в текущем каталоге.
Файл (который может быть каталогом) может существовать или не существовать. realpathне волнует по умолчанию. Он сообщает путь независимо от того, существует ли его последний элемент.
Если вы хотите, чтобы он сообщал только о существующих путях, используйте -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
Это потому, что вы даете ему путь, который не существует, поэтому он просто распечатывает текущий каталог и все, что вы ему дали, предполагая, что это будет путь. Обратите внимание, что на странице руководства указано, что:
Распечатать разрешенное абсолютное имя файла; все, кроме последнего компонента должны существовать
Таким образом, это позволяет выполнение с несуществующей целью. Для иллюстрации рассмотрим следующие примеры:
$ pwd
/home
$ ls
lost+found terdon
$ realpath terdon
/home/terdon
$ realpath nonExistentDir
/home/nonExistentDir
Или, чтобы дублировать то, что вы сделали:
$ pwd
/home/terdon
$ realpath terdon
/home/terdon/terdon
realpath .