Lệnh pwd là cả shell dựng sẵn và / bin / pwd. Trong các trường hợp thông thường, nội dung dựng sẵn sẽ được chạy theo ưu tiên cho / bin / pwd. Lệnh pwd có thể được gọi là pwd -L
hoặc pwd -P
Cả hai hàm dựng sẵn và / bin / pwd pwd -L
từ trang man
-L, --logical sử dụng PWD từ môi trường, ngay cả khi nó có chứa các liên kết tượng trưng
Vì vậy, khi bạn chạy pwd, bạn thực sự chạy pwd -L có hiệu lực in $ PWD (nếu nó tồn tại). Khi bạn chạy sudo pwd
, sudo chỉ cung cấp các biến môi trường đã được thông báo để truyền qua các env_keep
chỉ thị. PWD thường không có trong danh sách này, vì vậy sudo pwd phải tìm ra nó ở đâu và có hiệu lực như làpwd -P
-P, --physical tránh tất cả các liên kết tượng trưng
Cách để giải quyết vấn đề là sử dụng pwd -P
nếu bạn luôn muốn đường dẫn thư mục vật lý hoặc (như @Felix nói) để thêm PWD vào danh sách các biến môi trường để giữ thông qua một lệnh env_keep trong sudoers
env_keep += "PWD"