Çift kök klasör vs tek kök klasör


14

Linux kutumda, bash'da, iki ileri eğik çizgi ile gösterilen bir "çift kök" klasörüne erişimim var:

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

Klasörün içeriği ve alt klasörü "normal" tek eğik çizgi kökü ile aynıdır. Alt klasörlerine eriştiğimde çift eğik çizgi gitmiyor. Anomali üç veya daha fazla eğik çizgi ile kendini tekrarlamaz; bunlar kök için basit eşanlamlılardır:

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

Orası ne tür bir yer? Bu bir hata mı? Herkes anomaliyi açıklayabilir mi?


iyi soru - aynı davranışı fark ettim ama bunun neden olduğunu hiç sormadım.
Lajuette

Yanıtlar:


18

Gönderen Bash SSS E10 :

E10) 'cd //' neden $ PWD'yi '//' olarak bırakıyor?

POSIX.2, 'cd' açıklamasında , mevcut çalışma dizinini standartlaştırırken üç veya daha fazla önde gelen eğik çizginin tek bir eğik çizgi ile değiştirilebileceğini söylüyor .

Sanırım tarihsel uyumluluk için. Unix'in belirli sürümleri ve erken ağ dosya sistemleri, 'hostname' sunucusundaki 'path' öğesine erişmek için // hostname / path biçiminin yollarını kullandı.


1
Etki alanı / işletim sistemi böyle bir sistemdir.
user1686

1
Çift eğik çizgi hala kullanılıyor. Evrensel (veya Tekdüzen'in bir parçası; Birincil kaynak bulamıyorum) Adlandırma Sözleşmesi veya UNC. Windows, Unix ve Linux'ta görünür. URL'lerde çift eğik çizgi kullanılmasının nedeni budur.
Isaac Rabinovitch

1

"Bu bir hata değil, bir özelliktir!"

Hala aynı kök dizindesiniz. Bunun kökenini bilmiyorum, ama mutlak yollar için dizeler oluşturmakla ilgili bir şey olabileceğinden şüpheleniyorum. Başka biri kesin olarak biliyorsa, yukarı çekin.


0

Birden çok eğik çizgi kullandığınız araçlar tarafından yok sayılır ve her zaman aynı kök klasöre erişirsiniz.


Öyleyse bash // // 'ı / olduğu gibi bırakırken / olarak değiştiriyor?
Tomas

0

Birden çok eğik çizgi, yol adı çözümleme amacıyla tek bir eğik çizgi olarak değerlendirilir.

Kabuk isteminde gördüğünüz şey, bash PS1 kullanımının bir eseridir (bash sayfasındaki "PROMPTING" bölümüne bakın).

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

Sonuç sadece bir sunum meselesidir; her zaman aynı kök dizindesiniz. Bunu bakarak kontrol edebilirsiniz /proc/$$/root.

Bunu hiç bilmiyordum: http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap04.html#tag_04_11 "//" nin anlamı standartlar tarafından tanımlanmamış, ancak "///" ve daha fazla eğik çizgi "/" ile eşdeğerdir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.