Jawaban:
Built-in shell pwd menggunakan jalur shell melacak ketika Anda cd
(dan menyimpannya di $PWD
). Ini berarti jika Anda memiliki symlink ke jalur (dalam) yang kompleks, itu akan memberi tahu Anda apa yang Anda ketik untuk berubah ke direktori itu alih-alih jalur nyata. Ini dilakukan untuk memberi Anda apa yang paling Anda inginkan.
/bin/pwd
menggunakan getcwd
panggilan sistem (yang hari ini adalah panggilan pustaka, membaca /proc/self/cwd
) yang mengembalikan jalur kanonik untuk direktori saat ini, tidak dapat melakukan semua lintasan symlink.
Seperti yang ditunjukkan Steven D, pwd
ada -P
opsi untuk mengabaikan $PWD
. Ini juga memiliki -L
opsi untuk mengembalikan konten $PWD
. Halaman manual untuk pwd
tidak mengatakan opsi mana yang digunakan secara default tetapi pengalaman memberitahu saya bahwa uraian di atas adalah benar (shell pwd
vs. /bin/pwd
). Namun Anda mungkin tidak harus bergantung pada itu dan gunakan saja pwd -P
.
/bin/pwd
GNU pwd
ketika POSIXLY_CORRECT tidak disetel. Pada sistem POSIX di mana pwd
ada /bin
. /bin/pwd
akan menggunakan $ PWD dan dapat mengembalikan jalur dengan symlink. GNU pwd akan berperilaku seperti itu POSIX ketika menemukan variabel POSIXLY_CORRECT di lingkungannya.
man pwd
shell untuk mengetahui opsi untuk perintah ini.