Bạn thực sự đang ở /home/cpm135/public_html/class- đó là câu trả lời đúng duy nhất cho câu hỏi "thư mục làm việc hiện tại của tôi là gì".
Khi bạn đề cập đến /var/lib/class... đó không thực sự là về nơi bạn ở, mà nhiều hơn về con đường bạn đã sử dụng để đến đó .
Khi bạn chạy /bin/pwd, nó chỉ ra thư mục làm việc hiện tại của bạn bằng cách nhìn vào. và .. thư mục (những thư mục được liệt kê ở trên cùng ls -la), tìm ra thư mục nào trong .. khớp với. và sau đó làm việc ngược cho đến khi .. và. tham khảo cùng thư mục. Khi nó đã hoàn thành tất cả, nó sẽ biết thư mục làm việc hiện tại của bạn là gì.
Khi bạn chạy pwdshell được tích hợp sẵn, nó không tuân theo quy trình này (mặc dù nó có thể thực hiện một số thao tác nếu cần) - thay vào đó, nó nhớ đường dẫn mà bạn đã đi đến đây. Vì vậy, mỗi khi bạn thực hiện một cdlệnh, shell của bạn sẽ nhớ rằng đó là một phần của đường dẫn để đến nơi bạn đang ở hiện tại và pwdin ra những gì nó đã tính toán dựa trên tất cả các cdlệnh bạn đã thực hiện - có thể hoặc không phải là thực tế của bạn thư mục làm việc.
Mọi thứ có thể trở nên thực sự kỳ lạ khi bạn thực hiện ln -s . foovà tiếp tục tìm cdhiểu - /bin/pwdsẽ nói rằng bạn vẫn ở trong cùng một thư mục, nhưng trình dựng sẵn shell pwdsẽ nói bạn đang ở trong /foo/foo/foo/foo/foo/foo- mặc dù không có thư mục nào như vậy thực sự tồn tại. (Điều đó nói rằng - bạn có thể có thể cd vào nó.)
Một nguồn gây nhầm lẫn khác là nếu các thư mục được đổi tên. /bin/pwdsau đó sẽ nhận thay đổi ngay lập tức, nhưng tích hợp pwdsẽ không cho đến khi bạn làm điều gì đó cho biết tên thư mục cũ không thành vấn đề.