Katakanlah Anda memiliki direktori /dir1
dan /dir2/linked
, di mana yang terakhir adalah symlink ke yang sebelumnya.
Ketika Anda cd
ke linked
dan pwd
, Anda mendapatkan output /dir2/linked
. Jika Anda kemudian cd ..
, Anda akan dikenakan /dir2
. Perilaku ini konsisten dengan konsep Anda /dir2/linked
sebelumnya. Namun, seperti yang saya pahami, direktori induk ( ..
) dari direktori apa pun disimpan dalam inode direktori (yaitu: secara fisik di disk). Jelas, karena /dir2/linked
ini benar-benar /dir1
, direktori induk pada inode harus/
Untuk lebih memperumit masalah, sementara di dalam /dir2/linked
, output ls ..
dan cd .. ; ls .
berbeda! Sepertinya cd
menghormati jalan yang disinkronkan, sementara ls
menghormati jalan "fisik". Seperti yang disebutkan dalam pertanyaan ini , ada cd -P
untuk kasus penggunaan ini.
man pwd
menyebutkan direktori kerja "fisik" dan "logis", tetapi saya masih memiliki beberapa pertanyaan saat ini:
- Apakah perilaku ini selalu disediakan oleh
PWD
variabel lingkungan, sebagaimana disebutkan dalamman pwd
? - Mengapa default
cd
danls
memiliki perilaku yang berbeda, jika keduanya perintah shell (yaitu: bukan program)? - Apakah program tipikal (bukan perintah shell) digunakan
PWD
sebagai ganti jalur fisik? Saya menyadari ini tergantung pada implementasinya, tetapi adakah aturan mainnya?