Выход Realpath включает в себя вход

9

Я использую realpathкоманду, но она всегда добавляет исходный ввод в конце пути:

$ pwd
/homes/yosefkl
$ realpath yosefkl
/homes/yosefkl/yosefkl
Йозеф Климук
источник
Вы просите каталог внутри вашего текущего рабочего каталога. Попробуйте это вместо этого:realpath .
penguin359

Ответы:

17

Вы указали 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
Занна
источник
12

Это потому, что вы даете ему путь, который не существует, поэтому он просто распечатывает текущий каталог и все, что вы ему дали, предполагая, что это будет путь. Обратите внимание, что на странице руководства указано, что:

Распечатать разрешенное абсолютное имя файла; все, кроме последнего компонента должны существовать

Таким образом, это позволяет выполнение с несуществующей целью. Для иллюстрации рассмотрим следующие примеры:

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

Или, чтобы дублировать то, что вы сделали:

$ pwd
/home/terdon
$ realpath terdon
/home/terdon/terdon
terdon
источник
5

Нет, это только говорит о том, что путь к (возможно, несуществующему) файлу, yosefklрасположенному в текущем каталоге ( /homes/yosefkl), есть /homes/yosefkl/yosefkl. Пытаться

realpath "$PWD"
choroba
источник