Folder root ganda vs folder root tunggal


14

Di kotak Linux saya, dalam bash, saya memiliki akses ke folder "akar ganda" yang dilambangkan oleh dua garis miring:

tomas:~ $ cd /
tomas:/ $ ls
bin/ cdrom@ ...
tomas:/ $ cd //
tomas:// $ ls 
bin/ cdrom@ ...

Konten folder dan subfoldernya identik dengan root slash tunggal "normal". Slash ganda tidak hilang ketika saya mengakses subfoldernya. Peringatan tidak berulang dengan tiga tebasan atau lebih; ini adalah sinonim sederhana untuk root:

tomas:// $ cd home/tomas
tomas://home/tomas $ cd ///
tomas:/ $ cd ////
tomas:/ $

Tempat apa itu? Apakah ini bug? Adakah yang bisa menjelaskan annomaly?


pertanyaan bagus - saya perhatikan perilaku yang sama tetapi tidak pernah bertanya mengapa ini terjadi.
lajuette

Jawaban:


18

Dari Bash FAQ E10 :

E10) Mengapa 'cd //' meninggalkan $ PWD sebagai '//'?

POSIX.2, dalam uraiannya tentang 'cd', mengatakan bahwa tiga atau lebih garis miring terkemuka dapat diganti dengan garis miring tunggal ketika mengkanonik direktori kerja saat ini.

Saya kira ini adalah kompatibilitas historis. Versi Unix tertentu, dan sistem file jaringan awal, menggunakan jalur dari form // hostname / path untuk mengakses 'path' di server 'hostname'.


1
Domain / OS adalah salah satu sistem tersebut.
user1686

1
Slash ganda masih digunakan. Itu bagian dari Universal (atau Seragam; Saya sepertinya tidak bisa menemukan sumber utama) Konvensi Penamaan atau UNC. Itu muncul di Windows, Unix, dan Linux. Ini adalah alasan slash ganda digunakan dalam URL.
Isaac Rabinovitch

1

"Ini bukan bug, ini fitur!"

Anda masih di direktori root yang sama. Saya tidak tahu asal-usul ini, tetapi curiga itu mungkin ada hubungannya dengan membangun string untuk jalur absolut. Jika ada yang tahu pasti, pipa.


0

Beberapa garis miring hanya diabaikan oleh alat yang telah Anda gunakan dan Anda selalu membuka folder root yang sama.


Jadi mengapa bash mengubah /// menjadi / sambil meninggalkan // apa adanya?
Tomas

0

Beberapa garis miring diperlakukan sebagai garis miring tunggal untuk keperluan resolusi pathname.

Apa yang Anda lihat di prompt shell adalah artefak penanganan bash PS1 (lihat bagian "PROMPTING" di halaman bash).

[root@linux /]# cd /    ; echo $PWD
/
[root@linux /]# cd //   ; echo $PWD
//
[root@linux //]# cd /// ; echo $PWD
/
[root@linux /]# cd //// ; echo $PWD
/

Hasilnya hanya masalah presentasi; Anda selalu berada di direktori root yang sama. Anda dapat memeriksa ini dengan melihat /proc/$$/root.

[sunting] Ya saya tidak pernah tahu ini: http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap04.html#tag_04_11 Arti "//" dibiarkan tidak terdefinisi oleh standar, tetapi "///" dan lebih banyak garis miring setara dengan "/".

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.