Saya mencoba memahami sifat ..
(titik ganda). Tampaknya mengarah ke target yang berbeda tergantung pada bagaimana Anda mengaksesnya.
Contoh:-
/outer/
middle/
inner/
inner --> ./middle/inner/
Sekarang, /outer/middle/inner/..
mengarah ke /outer/middle/
, tetapi jika saya mengaksesnya melalui tautan simbolik, /outer/inner/..
mengarah ke /outer/
. Tampaknya ada dua yang berbeda di ..
sini.
Apa ..
sebenarnya? tautan simbolis? tautan keras? Atau itu dihasilkan secara dinamis tergantung pada jalur ketika direktori diakses? Atau mungkin pemahaman saya tentang tautan simbolik salah.
Edit:
Pengamatan terkait lainnya
/outer/
middle/
file
inner/
f --> ./../file
inner --> ./middle/inner/
Sekarang jika saya mencoba mengakses file /outer/inner/f
itu berfungsi. Tetapi seharusnya tidak karena /outer/inner/../file
tidak menunjuk ke file. file tersebut di /outer/middle/inner/..
. Ini sepertinya bertentangan dengan perilaku di atas !?
sumber
Jawaban:
..
adalah tautan keras ke direktori induk yang dibuat sebagai bagian dari entri direktori.Jika Anda menerbitkan
ls -ail
di masing-masing direktori ini, Anda akan melihat bahwa entri berikut semuanya memiliki jumlahinode
bidang yang sama (bidang pertama) dan hard link (bidang ketiga):..
saat mengeksekusils -ail
diinner
.
saat mengeksekusils -ail
dimiddle
middle
saat mengeksekusils -ail
diouter
Ada satu
..
entri diinner
. Jika direktori kerja Anda saat ini adalahouter
, Anda akan melihat hasil yang sama (daftar direktorimiddle
) darils -al inner/..
ls -al middle/inner/..
Satu-satunya situasi di mana "mengakses"
..
melalui link simbolik harus memberikan perilaku yang berbeda adalah jika Andacd
ke dalaminner
menggunakan symbolic link, sehingga Anda logis direktori kerja (pwd -L
) berbeda dari Anda fisik direktori kerja (pwd -P
). Dalam hal ini,cd ..
akan membawa Anda kembali keouter
bukan karena ada..
entri yang berbeda , tetapi karena shell Anda melacak direktori kerja logis Anda dan membuat Anda keluar satu tingkat, daripada mereferensikan..
entri yang sebenarnya masukinner
.Ini adalah kenyamanan yang disediakan oleh, misalnya
bash
sebagai bagian daricd
perintah bawaan. Anda dapat mengesampingkan ini dengan memintanya untuk mengubah ke..
entri aktual dengandi mana
-P
menginstruksikancd
(seperti dengan dipwd
atas) untuk menggunakan jalur fisik.sumber
cd
untuk memeriksa. Jadi, koreksi saya jika saya salah,..
selalu..
arahkan ke orangtua fisik, Jika symlink menggunakannya akan diarahkan ke orangtua (fisik) yang sebenarnya. Kebingungan hanya terjadicd
pada direktori.ls -lai
menunjukkan kepada Anda bahwa itu/..
adalah direktori root itu sendiri, lagi (alias/.
atau/
). Kecuali jika sistem file rusak, seharusnya tidak ada kasus lain di mana. == ..
; bahkan ketika fs dipasang di suatu tempat ia mendapat benar..
dari induk (sementara) (jadi ada beberapa keajaiban yang terjadi di sana,..
bukan hanya entri statis yang sederhana dalam tabel sistem file).