Anda benar-benar berada /home/cpm135/public_html/class
- itulah satu-satunya jawaban yang benar untuk pertanyaan "apa direktori kerja saya saat ini".
Ketika Anda merujuk ke /var/lib/class
... itu tidak benar-benar tentang di mana Anda berada, tetapi lebih banyak tentang jalan apa yang Anda gunakan untuk sampai ke sana .
Ketika Anda menjalankan /bin/pwd
, itu mengetahui direktori kerja Anda saat ini dengan melihat. dan .. direktori (yang tercantum di bagian atas ls -la
), mencari tahu direktori mana yang cocok dengan. dan kemudian bekerja mundur sampai .. dan. lihat direktori yang sama. Setelah selesai melakukan itu, ia tahu apa direktori kerja Anda saat ini.
Ketika Anda menjalankan pwd
shell built-in, itu tidak mengikuti prosedur ini (meskipun mungkin melakukan beberapa jika diperlukan) - sebagai gantinya, ia mengingat jalur yang Anda ambil untuk sampai ke sini. Jadi setiap kali Anda melakukan cd
perintah, shell Anda akan mengingatnya sebagai bagian dari jalur untuk mencapai tempat Anda sekarang, dan pwd
mencetak apa yang telah dihitung berdasarkan semua cd
perintah yang telah Anda lakukan - yang mungkin atau mungkin bukan aktual Anda direktori kerja.
Hal-hal bisa menjadi sangat aneh ketika Anda melakukan ln -s . foo
dan tetap cd
masuk ke foo - /bin/pwd
akan mengatakan Anda masih di direktori yang sama, tetapi shell builtin pwd
akan mengatakan Anda berada di /foo/foo/foo/foo/foo/foo
- meskipun tidak ada direktori seperti itu benar-benar ada. (Yang mengatakan - Anda mungkin bisa cd
ke dalamnya.)
Sumber lain kebingungan ada jika direktori diubah namanya. /bin/pwd
akan segera mengambil perubahan, tetapi built-in pwd
tidak akan sampai Anda melakukan sesuatu yang memberi tahu bahwa nama direktori lama tidak masalah.