W całej specyfikacji POSIX istnieje przepis ( 1 , 2 , 3 ...), który pozwala implementacjom traktować ścieżkę zaczynającą się od dwóch /
specjalnie.
Aplikacja POSIX (aplikacja napisana zgodnie ze specyfikacją POSIX, aby była przenośna dla wszystkich systemów zgodnych z POSIX) nie może założyć, że //foo/bar
jest taka sama jak /foo/bar
(choć może założyć, że ///foo/bar
jest taka sama jak /foo/bar
).
Jakie są te systemy POSIX (historyczne i nadal utrzymywane), które traktują //foo
specjalnie? Wierzyłem (teraz okazało się, że się mylę ), że Microsoft wymusił udostępnienie POSIX dla ich wariantu Unix (XENIX) i prawdopodobnie warstwy Windows POSIX (czy ktoś może to potwierdzić?).
Jest używany przez Cygwin, który jest również warstwą podobną do POSIX dla Microsoft Windows. Czy są jakieś systemy inne niż Microsoft Windows? OpenVMS?
W systemach, w których //foo/bar
jest wyjątkowy, do czego służy? //host/path
dostęp do sieciowych systemów plików? Wirtualne systemy plików?
Czy niektóre aplikacje działające na systemach uniksowych - jeśli nie API systemu - traktują //foo/bar
ścieżki specjalnie (w kontekstach, w których inaczej traktują /foo/bar
jako ścieżkę w systemie plików)?
Edytuj , od tego czasu zadałem pytanie na liście mailingowej grupy austin dotyczące pochodzenia //foo/bar
obsługi w specyfikacji, a dyskusja jest interesującą lekturą (przynajmniej z punktu widzenia archeologii).
źródło
ls -ld ///
również wyświetli///
,ls
po prostu wyświetla plik, który ma wyświetlać tak, jak został podany. Szukam systemów lub aplikacji, które traktują // foo / var specjalnie (nie jako ścieżkę w systemie plików), jak robi to Cygwin.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.
... nie do końca jednak uniksowy ^^).file://
podobnie dohttp://
i tak dalej. Na Chrome tutaj, w pracy, ścieżka UNC dla systemu Windows, którą teraz otworzyłem, jestfile:////$MACHINE/$SHARENAME/index.html
(chociaż z jakiegoś powodu również to rozumiefile://$MACHINE/...
)Odpowiedzi:
Jest to zestawienie i indeks dotychczasowych odpowiedzi. Ten post jest wiki społeczności , może go edytować każdy, kto ma ponad 100 reputacji i nikt nie zyskuje na nim reputacji. Możesz opublikować własną odpowiedź i dodać link do niej tutaj (lub poczekaj, aż to zrobię). Najlepiej byłoby, gdyby ta odpowiedź była streszczeniem (z krótkimi wpisami, podczas gdy poszczególne inne odpowiedzi zawierałyby szczegółowe informacje).
Obecnie aktywnie utrzymywane systemy:
//host/file
ścieżek udostępniania plików w sieci.//pathname
żądania do zestawów danych MVS , a nie do plików sieciowych. Przykład .Zepsute systemy
@BinaryZebra Apollo Domain / OS (potwierdzony). Wspomniany również w oficjalnym opisie UNC (Universal Naming Convention) jako możliwe źródło
//host/path
notacji ( patrz także strona 2-15).Według Donna Terry'ego to HP (który nabył Apollo Computers) naciskało na włączenie tego przepisu do specyfikacji POSIX dla domeny / systemu operacyjnego.
@jillagre Tektronix Utek ( potwierdzony ), gdzie
//host/path
jest ścieżka w rozproszonym systemie plików .//123/path
/path
//host/path
w (wycofany z SVR4)system zdalnego udostępniania plików RFS .//host/path
.Aplikacje, które traktują
//foo/bar
specjalnie dla ścieżek//depot/A/B/C/D
odnosi się do ścieżki w magazynie .//
przedrostka dla ścieżek względnych (do mieszanki związanej z blokiem danych) .źródło
//
przestrzeni nazw zostało zaproponowane przez niektórych deweloperów jądra Linuksa dla obiektów metadanych Reiser4, ale nie sądzę, że ta propozycja kiedykolwiek zyskała na popularności w Namesys, ani też nigdy nie została zaimplementowana.Wiem o Perforce, który używa
//depot/A/B/C/D
Ścieżek w celu odniesienia do składu. Perforce obsługuje także//Client/C/D
ścieżki, na które wskazuje klient//depot/A/B/
. W tym przypadku lokalny system plików może nie mieć tych ścieżek.p4 filelog //depot/A/B/C/D
pokaże historię tego pliku, nawet jeśli nie ma pliku/depot/A/B/C/D
.p4 filelog C/D
pokaże także historię tego pliku, jeśli zostanie wykonany z odpowiedniego katalogu.Odniesienie: https://www.perforce.com/perforce/r12.1/manuals/cmdref/o.fspecs.html
źródło
Kilka dekad temu Tektronix Utek (Unix oparty na BSD 4.2, najpierw na procesorach National Semiconductors 32016, a potem Motorola 68020 s) zapewniał coś o nazwie DFS (rozproszony system plików), pod którym
//foo/bar
odnosił się do/bar
pliku nafoo
serwerze dfs. Później został przestarzały przez NFS firmy Sun.Niestety nie wspomniałem jeszcze o tym, ale w końcu mogę znaleźć dokumentację Utek w mojej piwnicy i zaktualizować tę odpowiedź.
źródło
find
na przykład uniknąć przechodzenia przez punkt montowania. Autor wyraźnie wyklucza//foo/bar
(lub połączenie z Newcastle/../foo/bar
)Podążając za wskazówką z tej odpowiedzi . I czytanie strony 2-15 z podręcznika Bitsavers (dzięki @grawity ).
Istnieje również starszy podręcznik z „Pierwszym drukiem: lipiec 1985”. Na stronie 1-4:
Mamy więc potwierdzenie, że domena / system operacyjny Apollo był używany
//
do rootowania sieci.źródło
Inna aplikacja: Blender traktuje interlinię
//
jako odniesienie do katalogu projektu (katalogu, w którym.blend
plik jest zapisany). Oto odpowiednia strona podręcznika .Dotyczy to również systemów operacyjnych innych niż Unix (tj. Windows).
źródło
ReactOS projekt - który jest darmowy i open-source realizacja jądrze NT i pokrewnych API - najwyraźniej zobowiązała się również realizować własne Interix -Jak POSIX podsystemu (choć oryginalny OS / 2 podsystem MS jest również wspomniane w kontekście , nie wspomina jest wykonany z analogu ReactOS) .
Choć dotychczasowe wysiłki były niewielkie ,
fork()
najwyraźniej jest to rzeczywistość. Oto fragment strony projektu podsystemu wymienionej w części „ Otwarte problemy” :Nie jestem pewien, jak to się kwalifikuje, ponieważ nie jestem pewien, jak wiele z nich zostało zaimplementowanych, ale pomyślałem, że był to bardzo interesujący opis problemu.
źródło
//foo/bar
obsłudze. Nie znalazłem mocnych dowodów, że podsystem Windows POSIX lub Interix faktycznie je obsługiwały.lsacl
polecenie MKS jest zrozumiałe,\\machinename\driveletter:\path
podczas gdy jegoregistry
polecenie było zrozumieniem tej formy lub opcjonalnie w//
jakikolwiek sposób. Ponieważ zestaw MKS był poprzednikiem Interixa i był tym, co MS dostarczał dla wersji 1/2, pomyślałbym, że Interix musiał zaakceptować kompatybilną składnię dla tak podstawowej rzeczy.W latach 80. SEL / Gould miał system operacyjny Unix o nazwie UTX-32, który był równoważny z Solaris; tzn. ścieżka dostępu zdalnego na hoście . Nie mogę znaleźć na nim żadnej dokumentacji, więc nie wiem, czy była to RFS, czy ewolucja równoległa (czy też AT&T
//host/path
/net/host/path
path
host
Ukradłemnabył go od Goulda).źródło
//host/path
w UTX-32)?Mam niejasną pamięć, że
//host/path
notacja została zastosowana w AT&T SysV.3 w ramach implementacji zdalnego udostępniania plików RFS . Zostało to ostatecznie porzucone w momencie wydania SysV.4 na rzecz prostszego, ale bardziej popularnego NFS od Sun Microsystems.Nie mogę jednak znaleźć żadnych konkretnych odniesień do składni, a dokumentacja, którą właśnie przejrzałem, wydaje się wskazywać, że pomysł użytkownika wyraźnie określającego zdalną nazwę hosta byłby sprzeczny z zasadą niezależności lokalizacji.
Referencje 1. Przegląd architektury RFS
źródło
//host/path
. Wydaje się to sugerować, że sieciowe systemy plików muszą być montowane jawnie.Stany POSIX w uzasadnieniu dla A.4.12 paragrafy 9 i 10:
To wydaje się potwierdzać, że
//
oznacza to „root sieci”, a przynajmniej taki był pomysł, kiedy reguła została zawarta w POSIX.Poniższe reguły usuwają wszelkie znaczenie
//
środkowej części ścieżki dla/
uruchomionej nazwy ścieżki :Oczywiście
//
uruchomiona nazwa ścieżki może rozszerzyć lub zmienić użycie//
wewnątrz nazwy ścieżki (nie na początku). POSIX.1 pozwala na to. To ostatnie potwierdza, że jedyne//
dozwolone są na początku Ścieżki.źródło