Jawaban:
Itu tergantung pada apa yang Anda lakukan. Pertama-tama, $PWDadalah variabel lingkungan dan pwdmerupakan shell builtin atau biner aktual:
$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
Sekarang, bash builtin hanya akan mencetak nilai saat ini $PWDkecuali Anda menggunakan -Pbendera. Sebagaimana dijelaskan dalam help pwd:
pwd: pwd [-LP]
Print the name of the current working directory.
Options:
-L print the value of $PWD if it names the current working
directory
-P print the physical directory, without any symbolic links
By default, `pwd' behaves as if `-L' were specified.
The pwdbiner, di sisi lain, mendapat direktori saat ini melalui getcwd(3)system call yang mengembalikan nilai yang sama seperti readlink -f /proc/self/cwd. Untuk mengilustrasikan, coba pindah ke direktori yang merupakan tautan ke yang lain:
$ ls -l
total 4
drwxr-xr-x 2 terdon terdon 4096 Jun 4 11:22 foo
lrwxrwxrwx 1 terdon terdon 4 Jun 4 11:22 linktofoo -> foo/
$ cd linktofoo
$ echo $PWD
/home/terdon/foo/linktofoo
$ pwd
/home/terdon/foo/linktofoo
$ /bin/pwd
/home/terdon/foo/foo
Jadi, sebagai kesimpulan, pada sistem GNU (seperti Ubuntu), pwddan echo $PWDsama kecuali Anda menggunakan -Popsi tetapi /bin/pwdberbeda dan berperilaku seperti pwd -P.
Keduanya akan mengembalikan hasil yang sama jika Anda menggunakannya tanpa opsi untuk semua direktori yang berfungsi, termasuk ketika di tautan simbolis.
Namun, dari man pwd:
-P, --physical
avoid all symlinks
Ini berarti mengeksekusi pwd -Pketika dalam tautan simbolik yang menunjuk ke beberapa direktori lain yang akan mencetak path ke direktori asli.
Sebagai contoh, jika Anda memiliki tautan simbolis /var/runyang mengarah ke /rundan Anda saat ini dalam /var/run/direktori, mengeksekusi
echo $PWD
akan kembali:
/var/run
dan akan sama untuk pwd. Namun, jika Anda menjalankan:
pwd -P
akan kembali
/run
Jadi, itu tergantung jalur mana yang Anda perlukan: jalur aktual tanpa tautan simbolik atau direktori saat ini yang mengabaikan tautan simbolik. Satu-satunya perbedaan antara pwd -Pdan echo $PWDadalah ketika ada tautan simbolik.