Jika saya lakukan pwd
saya perhatikan itu menggunakan symlink apa pun yang saya gunakan untuk masuk ke direktori saat ini. Bolehkah saya memberitahuku direktori "asli" yang saya masuki ... yaitu jalur dari root ke direktori saya saat ini tanpa menggunakan symlink?
54
man pwd
shell untuk mengetahui opsi untuk perintah ini.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
menggunakangetcwd
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 untukpwd
tidak mengatakan opsi mana yang digunakan secara default tetapi pengalaman memberitahu saya bahwa uraian di atas adalah benar (shellpwd
vs./bin/pwd
). Namun Anda mungkin tidak harus bergantung pada itu dan gunakan sajapwd -P
.sumber
/bin/pwd
GNUpwd
ketika POSIXLY_CORRECT tidak disetel. Pada sistem POSIX di manapwd
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.