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 pwd
shell đượ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 cd
lệ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à pwd
in ra những gì nó đã tính toán dựa trên tất cả các cd
lệ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 . foo
và tiếp tục tìm cd
hiểu - /bin/pwd
sẽ 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 pwd
sẽ 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/pwd
sau đó sẽ nhận thay đổi ngay lập tức, nhưng tích hợp pwd
sẽ 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 đề.