Hangi sistemlerde // foo / bar / foo / bar'dan farklı?


114

POSIX spesifikasyonu boyunca, uygulamaların özel olarak iki ile başlayan bir yolu tedavi etmesine izin veren bir hüküm ( 1 , 2 , 3 ...) vardır /.

Bir POSIX uygulaması (tüm POSIX uyumlu sistemlere taşınabilir olması için POSIX spesifikasyonuna yazılan bir uygulama) //foo/bar, bunun aynı /foo/barolduğunu varsaymaz (bunun ///foo/baraynı olduğunu varsayabilir /foo/bar).

Şimdi, //fooözel muamele gören POSIX sistemleri (tarihi ve hala korunan) nelerdir? Ben (şimdi ettik inanılan yanlış kanıtlanmıştır POSIX hüküm onların Unix varyantı (XENIX) ve muhtemelen, Windows POSIX katmanı için Microsoft tarafından itildiğini) (herkes teyit edebilir?).

Microsoft Windows için POSIX benzeri bir katman olan Cygwin tarafından kullanılır. Microsoft olmayan Windows sistemleri var mı? OpenVMS?

//foo/barÖzel olan sistemlerde ne için kullanılır? //host/pathAğ dosya sistemleri erişimi için? Sanal dosya sistemleri?

Unix-like'lerde çalışan bazı uygulamalar (sistemin API'sı olmasa da) //foo/baryolları özel olarak ele alıyor mu (başka bir deyişle /foo/bardosya sisteminde yol olarak gördükleri bağlamda )?


Düzenleme , o zamandan beri , austin grubu posta listesinde//foo/bar teknik özelliklerin kullanımının kökenine ilişkin bir soru sordum ve tartışma ilginç bir okuma (en azından arkeoloji bakış açısından).



1
@OlivierDulac, No. ls -ld ///da görüntülerdi ///, lssadece olduğu gibi göstermesi söylenen dosyayı görüntüler. Cygwin gibi // foo / var'ı özel olarak ele alan (dosya sistemindeki bir yol değil) sistemleri veya uygulamaları arıyorum.
Stéphane Chazelas

1
standard ( pubs.opengroup.org/onlinepubs/009695399/basedefs/… ), sizin de belirttiğiniz gibi, "İki ardışık eğik çizgiyle başlayan bir yol adı, uygulama tarafından tanımlanmış bir şekilde yorumlanabilir" (2'den 1 / 1'e kadar) . İnternette bulunan bir örnek: austingroupbugs.net/view.php?id=83 ( IBM's z/OS resolves //pathname requests to MVS datasets (as opposed to the hierarchical filesystem (HFS)) (......) Additionally, z/OS would not accept or recognize additional "directory" or "file" components appended to such paths.... tam olarak unix değil, ^^).
Olivier Dulac

4
@DevSolar: gerçekten iç içe geçmiş (ve şaşırtıcı), ancak POSIX dışında her şey mümkün olduğu için sadece POSIX'e bağlı kalmalıyız ^^
Olivier Dulac

2
@ edwardtorvalds çünkü ilk bit URL:, file://ve benzerleridir http://. Ben açık olan burada işin bir windows UNC yolu ile krom On artık file:////$MACHINE/$SHARENAME/index.html(nedense o da anlar rağmen file://$MACHINE/...)
admalledd

Yanıtlar:


90

Bu, şu ana kadar verilen cevapların bir derlemesi ve endeksidir. Bu gönderi topluluk wiki'dir , 100'den fazla itibarı olan herkes tarafından düzenlenebilir ve hiç kimse ondan itibar alamaz. Kendi cevabınızı göndermek ve buraya bir link eklemek için çekinmeyin (veya yapmamı bekleyin). İdeal olarak, bu cevap sadece bir özet olmalıdır (kısa cevaplarla, diğer bireysel cevaplar ayrıntılara sahipken).

Şu anda aktif olarak bakımı yapılan sistemler:

Feshedilmiş sistemler

//foo/barÖzel yollar için tedavi gören uygulamalar


3
//Ad alanını kullanmak, bazı Linux çekirdeği geliştiricileri tarafından Reiser4'ün meta veri tesisleri için önerildi, ancak bu teklifin Namesys içinde hiç çekiş kazandığını sanmıyorum.
Jörg W Mittag

Windows, POSIX API'sini uygular ... bu, çift eğik çizgiyi nasıl idare eder?
Kevin

1
Web'de, çift eğik çizgiyle başlayan kaynakların tek eğik çizgiden farklı bir kök tanımladığını ekleyebiliriz.
Alex Gittemeier,

@Kevin, evet, aynı zamanda inanıyorum (soruyu görün), isteğe bağlı bir bileşen olduğunu düşünmeme rağmen, yalnızca bazı Windows sürümlerinde ve artık üretilmiyor. Daha fazla ayrıntı varsa, lütfen bir cevap ekleyin.
Stéphane Chazelas,

@AlexGittemeier. Evet, aslında bu cevapta kullanıldığını fark edeceksiniz ;-).
Stéphane Chazelas

16

Unix-like'lerde çalışan bazı uygulamalar - sistemin API'sı - özel olarak // foo / bar Yollarını tedavi etmiyor mu?

//depot/A/B/C/DDepoya gönderme yapmak için Yol kullanan Performansın farkındayım . Performans //Client/C/D, Müşteri işaret ettiğinde Yolları da destekler //depot/A/B/. Burada, yerel FileSystem bu Yollara sahip olmayabilir.

p4 filelog //depot/A/B/C/Ddosya olmasa da, o dosyanın geçmişini gösterir /depot/A/B/C/D.

p4 filelog C/D Ayrıca, uygun Dizinden yürütülürse, o dosyanın geçmişini de gösterir.

Referans: https://www.perforce.com/perforce/r12.1/manuals/cmdref/o.fspecs.html


13

Birkaç on yıl önce, Tektronix Utek ( önce National Semiconductors 32016 CPU’larda BSD 4.2 tabanlı Unix, ardından Motorola 68020 s), dfs sunucusundaki dosyaya //foo/baratıfta bulunan DFS (dağıtılmış dosya sistemi) adında bir şey sağlıyordu . Daha sonra Sun'ın NFS'i tarafından kullanılmaya başlandı./barfoo

Maalesef, henüz bunu geri göndermediğim için başvuruda bulunmadım, ancak sonunda mahzende bazı Utek belgeleri bulup bu cevabı güncelleyebilirim.


1
Tarafından doğrulandığını bu usenet tartışma
Stéphane Chazelas

@ StéphaneChazelas Usenet tartışmasına bu bağlantının daha iyi olduğuna inanıyorum . Seçtiğiniz bir Domain / OS'ye sahip fakat Utek değil. Veya bir sonraki mesaj (sizden)


Tektronix / BSD RFS uygulamaları görünüşte normal dosyalarda uzak dosya sistemleri monte önlemek için findbağlama noktası çapraz mesela. Yazar orada açıkça //foo/bar(veya Newcastle bağlantısının /../foo/bar) kural dışı olduğunu
Stéphane Chazelas


7

Bu cevabın başından sonra . Ve sayfa 2-15'i Bitsavers el kitabından okuyun (teşekkürler @grawity ).

Paylaşılan Veriler
Domain / OS dağıtılmış dosya sisteminin ikinci tasarım ilkesi, varsayılan olarak paylaşılır, global bir üniforma isim alanı anlamına gelir. Dağıtılmış dosya sisteminin ad alanı, devasa bir zaman paylaşımına sahip dosya sistemininki gibi kullanıcılara görünür. Bu, geleneksel bir UNIX hiyerarşik ad alanıdır, ancak mutlak yol adlarının ağ kökünün adıyla başlayabilmesi dışında (// adı verilir). Yerel düğümün köküne (/ dizini) göre yol adlarını ifade etmek de mümkündür.

Ayrıca "İlk Baskı: Temmuz 1985" adlı eski bir kitapçık var . 1-4. Sayfada:

Şekil 1-2'deki çift eğik çizgiler (//), adlandırma ağacının en üst düzeyini, ağ kök dizinini temsil eder.

Bu nedenle, Apollo’dan Domain / OS’ın //network root olarak kullanıldığı onaylandı .


Yerçekimi adam büyük bir kemer Linux dev olduğunu düşünüyorum .
mikeserv


5

ReactOS projesi - NT çekirdeği ve ilgili API ücretsiz ve açık kaynaklı bir uygulamasıdır - görünüşte aynı zamanda kendi uygulamayı ele almaktadır interix -like POSIX alt sistemini MS'nin orijinal OS / 2 alt sistemi de olsa ( bağlamda söz , hiç söz bir ReactOS analogundan yapılmıştır) .

Çabalar şimdiye kadar olmuştur rağmen küçük , fork()görünüşte bir gerçektir. İşte alt konulardaki proje sayfasından, açık sayılar altında listelenen bir bölüm :

yolları

POSIX uygulamalarında Win32 yollarını kullanmanın en iyi yolu nedir? fikirler:

  • //<device>/<path>> içine çevir \\.\<device>\<path> (sürücü harfleri için özel bir durumla - //<letter>/<path>=> <letter>:\<path>- ve özel kaçış //./<raw text>=> \\.\<raw text>. UNC yolları ile belirtilebilir //unc/<path>) . //yollar, uygulamaya özgü davranış için standart tarafından ayrılmıştır ve //<letter>/Win32 yollarından kaçmak için kullanılan sözdizimi, mevcut POSIX uyumluluk ortamlarında yaygın olarak kullanılmaktadır.

  • "Çıplak" Win32 yollarını tanımak için sezgisel tarama

  • Win32 yolları ve //yolları için büyük / küçük harfe duyarlı olmayan arama (standart,// yollar için bu tür uygulamaya özel davranışlara izin veriyor mu?) .

Bunun ne kadarının uygulandığından emin olmadığımdan nasıl nitelendiğinden emin değilim, ancak sorunun yararlı bir açıklaması olduğunu düşündüm.


XENIX'in POSIX alt sistemi yoktu , Windows AFAIK'a sahipti. XENIX bir Unix'ti (başlangıçta Microsoft'un AT&T'den bir lisans satın aldığı Unix V7'ye dayanıyordu).
Stéphane Chazelas

1
Güzel burada interix / Windows POSIX alt sistemi hakkında da okuyun
Stéphane Chazelas

@ StéphaneChazelas - oldukça. Neredeyse onunla bağlantımı değiştirmek istiyorum, ama sonunda küçük bir görüşe dayalı ve gerçekten bir referans olarak çalışmıyor ... ama yorumu silmeyin, lütfen?
mikeserv

Her durumda, //foo/barkullanım söz değil . Windows POSIX alt sisteminin veya Interix'in şu ana kadar kullandıklarına dair güçlü kanıtlar bulamadım.
Stéphane Chazelas

@ StéphaneChazelas - sadece son derece incosistent olsaydı Bilmiyorum, ya dışarıda bırakarak eğer isteğe kısmı sadece bir gözetim oldu ama MKS lsaclkomut anlamak için spec 'olduğunu \\machinename\driveletter:\pathonun ise registrykomut bu formu veya anlaşılması spec' oldu isteğe// her iki şekilde. MKS kiti Interix'in öncülüydü ve sürümler için MS'in gönderdiği sürüm buydu çünkü Interix'in böyle bir temel şey için uyumlu sözdizimini kabul etmesi gerektiğini düşünürdüm.
mikeserv

4

1980'lerde, SEÇ / Gould UTX-32 içinde adı verilen bir UNIX işletim sistemi vardı eşdeğer edilmiş Solaris; yani, ana bilgisayardaki uzaktan erişim yolu . Bununla ilgili herhangi bir belge bulamıyorum, bu nedenle bunun RFS veya paralel evrim olup olmadığını (veya AT&T olup olmadığını bilmiyorum)//host/path/net/host/pathpathhostçaldı Gould'dan satın aldı).


Teşekkürler. Bu konuda ( //host/pathUTX-32'de) herhangi bir şansa sahip olabilir misiniz?
Stéphane Chazelas

Bu benim tavan arasında bir kutu içinde bir basılı kopya belgesi olması mümkün, ama olası değildir - (1) Hatırlamıyorum hiç belgelerin çok sahip (Ben beş dakikalık sözlü brifing hatırlıyorum); (2) Elimde olsa bile, eve götürmemiş olabilirdim; (3) eve götürsem bile, muhtemelen son 30 yılda bir süre atmıştım; ve (4) hala sahip olsam bile, muhtemelen bulamam. Oh, ayrıca (0) Beş dakikamı yanıt yazmadan önce boşuna (boşuna) harcadım.
Scott

4

//host/pathAT & T SysV.3'te gösterimin, RFS Uzaktan Dosya Paylaşımı uygulamasının bir parçası olarak kullanıldığına dair belirsiz bir hafızam var . Bu, SysV.4'ün Sun Microsystems'dan daha basit ama daha popüler NFS lehine serbest bırakıldığı zaman sonunda terk edildi .

Ancak, sözdizimine somut referanslar bulamıyorum ve şu anda gözden geçirdiğim belgeler kullanıcının uzak bir ana bilgisayar adını açıkça belirttiği fikrinin, konum bağımsızlığının tasarım ilkesine aykırı olduğunu gösteriyor gibi görünüyor.

Referanslar 1. RFS Mimarisine genel bakış


3
Founf bu RFS hakkında. Referans bulamıyorum //host/path. Ağ dosya sistemlerinin açıkça monte edilmesi gerektiği anlaşılıyor.
Stéphane Chazelas,

Hatırlatma için teşekkürler. Bu "gözden geçirdiğim belgelerin" parçalarından biri, bu yüzden sakıncası yoksa bir link ekleyeceğim. Hala bunun üzerinde kafa yoruyorum; Ertesi gün bana gelebilir.
roaima,

4

POSIX , A.4.12 Pathname Resolution Paragraf 9 ve 10'un Gerekçesinde :

Bazı ağ sistemlerinde, /../hostname/, başka bir ana bilgisayarın kök dizinine atıfta bulunmak için kullanılır ve POSIX.1 bu davranışa izin verir.

Ağa bağlı diğer sistemler, aynı amaç için construct // hostname öğesini kullanır; yani, çift ilk eğik çizgi kullanılır.

Bu , "ağ kökü" anlamına geldiğini veya en azından kuralın POSIX’e dahil edildiğinde ortaya çıkan fikir olduğunu onaylıyor gibi görünüyor// .


Başlamış bir Pathname //için bir yolun ortasındaki anlamını kaldırmak için kurallar uygulanır /:

... iki veya daha fazla <slash> karakterinin lider olmayan dizileri
tek bir <slash> olarak kabul edildiğinden, ...

Tabii ki, //başlatılmış //bir Pathname bir Pathname içindeki kullanımı (başlangıçta değil) genişletebilir veya değiştirebilir . POSIX.1 buna izin verir. Bu son, //izin verilen tek kişinin bir Pathname'nin başında olduğunu onaylar .

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.