คุณอยู่ใน/home/cpm135/public_html/class
- นั่นคือคำตอบที่ถูกต้องสำหรับคำถามของ "สิ่งที่ไดเรกทอรีการทำงานปัจจุบันของฉัน"
เมื่อคุณอ้างถึง/var/lib/class
... นั่นไม่ได้เกี่ยวกับว่าคุณอยู่ที่ไหน แต่เป็นเรื่องเพิ่มเติมสิ่งที่เส้นทางที่คุณใช้ในการได้รับมี
เมื่อคุณวิ่ง /bin/pwd
มันจะระบุไดเรกทอรีการทำงานปัจจุบันของคุณโดยดูที่ และ .. ไดเรคทอรี่ (รายการที่อยู่ด้านบนของls -la
), หาว่าไดเรกทอรีใดใน .. ตรงกับ และทำงานย้อนกลับไปจนถึง .. และ อ้างถึงไดเรกทอรีเดียวกัน เมื่อเสร็จสิ้นทั้งหมดแล้วมันจะรู้ว่าไดเรกทอรีทำงานปัจจุบันของคุณคืออะไร
เมื่อคุณรันpwd
เชลล์ในตัวมันจะไม่ทำตามโพรซีเดอร์นี้ (แม้ว่ามันอาจทำบางอย่างถ้าจำเป็น) - แต่มันจะจำพา ธ ที่คุณพามาที่นี่ ดังนั้นทุกครั้งที่คุณทำcd
คำสั่งเชลล์ของคุณจะจำได้ว่าเป็นส่วนหนึ่งของเส้นทางที่จะไปถึงที่ที่คุณอยู่ตอนนี้และpwd
พิมพ์สิ่งที่cd
คำสั่งคำนวณตามคำสั่งทั้งหมดที่คุณทำซึ่งอาจเป็นหรือไม่ใช่ของจริงก็ได้ ไดเรกทอรีทำงาน
สิ่งต่าง ๆ อาจดูแปลกประหลาดจริงๆเมื่อคุณทำ a ln -s . foo
และคอยcd
จดจ่ออยู่กับ foo - /bin/pwd
จะบอกว่าคุณยังอยู่ในไดเรกทอรีเดียวกัน แต่ shell builtin pwd
จะบอกว่าคุณอยู่ในนั้น/foo/foo/foo/foo/foo/foo
- แม้ว่าจะไม่มีไดเรกทอรีดังกล่าวอยู่จริง (ที่กล่าวว่า - คุณอาจจะสามารถ cd
เข้าไปในมัน.)
แหล่งที่มาของความสับสนอีกอย่างคือถ้ามีการเปลี่ยนชื่อไดเรกทอรี /bin/pwd
จะรับการเปลี่ยนแปลงทันที แต่ในตัวเครื่องpwd
จะไม่ทำงานจนกว่าคุณจะทำสิ่งที่บอกว่าชื่อไดเรกทอรีเก่าไม่สำคัญ