Я пытаюсь эмулировать процесс разрешения пути (см. Man-страницу path_resolution) в Unix-подобных системах.
Моя ОС Linux с ядром GNU 8.7.
Чтобы прояснить значение дополнительного трейлинга «/» в резолюции, я сделал следующие вещи в оболочке:
mkdir this_is_dir
ln -s this_is_dir this_is_link
rm this_is_link
Все было хорошо, потому что this_is_link является символической ссылкой, и я просто удалил ее. Но пока пытаюсь:
mkdir this_is_dir
ln -s this_is_dir this_is_link
rm this_is_link/
Это повторилось rm: cannot remove 'this_is_link/': Is a directory
Ну, после «/» последовала символическая ссылка, подумал я. Итак, я попробовал другую команду:rmdir this_is_link/
И вышел забавный результат: rmdir: failed to remove 'this_is_link/': Not a directory
Не то, что я ожидал. Поэтому я попросил моего друга подтвердить, можно ли получить такой же результат в его системе. У него была более низкая версия coreutils, чем у меня. И результат не был удивителен, независимо от того , rm
или rmdir 'this_is_link/'
, такая же ошибка Not a directory
происходит .
А другой друг только что опробовал его на своей Mac OS, результат: rm
=> 'Является ли каталог', rmdir
=> каталог успешно удален, ссылка осталась .
Есть ли какие-либо спецификации о точном поведении разрешения пути?