Tôi đang cố gắng mô phỏng quá trình phân giải đường dẫn (xem path_resolution của trang man) trong các hệ thống giống như unix.
HĐH của tôi là Linux với GNU coreutils 8.7.
Để làm rõ ý nghĩa của việc thêm dấu '/' trong độ phân giải, tôi đã làm theo những điều sau đây:
mkdir this_is_dir
ln -s this_is_dir this_is_link
rm this_is_link
Mọi thứ đều ổn, bởi vì this_is_link là một liên kết tượng trưng và tôi chỉ xóa nó đi. Nhưng trong khi thử:
mkdir this_is_dir
ln -s this_is_dir this_is_link
rm this_is_link/
Nó lặp lại rm: cannot remove 'this_is_link/': Is a directory
Chà, dấu vết '/' gây ra sau symlink, tôi nghĩ vậy. Vì vậy, tôi đã thử một lệnh khác:rmdir this_is_link/
Và một kết quả hài hước xuất hiện: rmdir: failed to remove 'this_is_link/': Not a directory
Không phải những gì tôi mong đợi. Vì vậy, tôi đã yêu cầu bạn tôi xác nhận nếu kết quả tương tự có thể thu được trên hệ thống của anh ta. Anh ta có một phiên bản lõi thấp hơn tôi. Và kết quả thật đáng kinh ngạc, không có vấn đề rm
hay rmdir 'this_is_link/'
, cùng một lỗi Not a directory
xảy ra .
Và một người bạn khác vừa dùng thử trên Mac OS của anh ta, kết quả là: rm
=> 'Là một thư mục', rmdir
=> thư mục bị xóa thành công, liên kết vẫn còn .
Có bất kỳ thông số kỹ thuật về hành vi chính xác của độ phân giải đường dẫn?