Sepanjang spesifikasi POSIX, ada ketentuan ( 1 , 2 , 3 ...) untuk memungkinkan implementasi memperlakukan jalur yang dimulai dengan dua jalur /
khusus.
Aplikasi POSIX (aplikasi yang ditulis dengan spesifikasi POSIX agar portabel untuk semua sistem yang sesuai dengan POSIX) tidak dapat berasumsi //foo/bar
sama dengan /foo/bar
(meskipun mereka dapat berasumsi ///foo/bar
sama dengan /foo/bar
).
Sekarang apa sajakah sistem POSIX (historis dan masih dipertahankan) yang memperlakukan //foo
khusus? Saya percaya (sekarang saya telah terbukti salah ) bahwa ketentuan POSIX didorong oleh Microsoft untuk varian Unix mereka (XENIX) dan mungkin lapisan Windows POSIX (dapatkah ada yang mengonfirmasi itu?).
Ini digunakan oleh Cygwin yang juga merupakan lapisan seperti POSIX untuk Microsoft Windows. Apakah ada sistem non-Microsoft Windows? OpenVMS?
Pada sistem di mana //foo/bar
spesial, untuk apa ia digunakan? //host/path
untuk akses sistem file jaringan? Sistem file virtual?
Apakah beberapa aplikasi yang berjalan di Unix-like - jika bukan API sistem - memperlakukan //foo/bar
jalur khusus (dalam konteks di mana mereka memperlakukannya /foo/bar
sebagai jalur pada sistem berkas)?
Sunting , Saya telah mengajukan pertanyaan pada milis austin-grup tentang asal //foo/bar
penanganan dalam spesifikasi, dan diskusi adalah bacaan yang menarik (setidaknya dari sudut pandang arkeologi).
sumber
ls -ld ///
juga akan menampilkan///
,ls
hanya menampilkan file yang diperintahkan untuk ditampilkan seperti yang diberikan. Saya mencari sistem atau aplikasi yang memperlakukan // foo / var secara khusus (bukan sebagai jalur pada sistem berkas) seperti yang dilakukan 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.
... meskipun tidak benar-benar unix, ^^).file://
sama denganhttp://
dan semacamnya. Pada chrome di sini di tempat kerja jalan UNC windows yang saya buka sekarang adalahfile:////$MACHINE/$SHARENAME/index.html
(meskipun untuk beberapa alasan juga mengertifile://$MACHINE/...
)Jawaban:
Ini adalah kompilasi dan indeks dari jawaban yang diberikan sejauh ini. Posting ini adalah wiki komunitas , dapat diedit oleh siapa saja dengan 100+ reputasi dan tidak ada yang mendapat reputasi darinya. Jangan ragu untuk mengirim jawaban Anda sendiri dan menambahkan tautan di sini (atau tunggu saya melakukannya). Idealnya, jawaban ini hanya berupa ringkasan (dengan entri pendek sementara masing-masing jawaban lainnya memiliki detail).
Sistem yang saat ini dikelola secara aktif:
//host/file
jalur berbagi file jaringan.//pathname
permintaan ke dataset MVS , bukan ke file jaringan. Contoh .Sistem mati
@BinaryZebra Apollo Domain / OS (dikonfirmasi). Juga disebutkan di Uraian Resmi UNC (Konvensi Penamaan Universal) sebagai kemungkinan asal
//host/path
notasi ( lihat juga , halaman 2-15).Menurut Donn Terry , itu HP (yang mengakuisisi Apollo Computers) yang mendorong untuk dimasukkannya ketentuan itu dalam spesifikasi POSIX untuk Domain / OS.
@ jillagre Tektronix Utek ( dikuatkan ), di mana
//host/path
terdapat path pada sistem file terdistribusi .//123/path
/path
//host/path
di (dihentikan dalam SVR4)sistem Berbagi File Jarak Jauh RFS .//host/path
.Aplikasi yang memperlakukan
//foo/bar
jalur khusus//depot/A/B/C/D
mengacu pada jalur di depo .//
awalan untuk jalur relatif (untuk campuran yang terkait dengan blok data) .sumber
//
namespace diusulkan oleh beberapa pengembang kernel Linux untuk fasilitas metadata Reiser4, tapi saya tidak berpikir proposal ini pernah mendapatkan daya tarik dalam Namesys, juga tidak pernah diimplementasikan.Saya mengetahui Perforce yang menggunakan
//depot/A/B/C/D
Paths untuk merujuk ke Depot. Perforce juga mendukung//Client/C/D
Paths, ketika Klien menunjuk ke//depot/A/B/
. Di sini, FileSystem lokal mungkin tidak memiliki Paths ini.p4 filelog //depot/A/B/C/D
akan menampilkan riwayat file itu, meskipun tidak ada file/depot/A/B/C/D
.p4 filelog C/D
juga akan menunjukkan riwayat file itu, jika dijalankan dari Direktori yang sesuai.Referensi: https://www.perforce.com/perforce/r12.1/manuals/cmdref/o.fspecs.html
sumber
Beberapa dekade yang lalu, Tektronix Utek (BSD 4.2 berbasis Unix, pertama pada National Semiconductors 32016 CPU kemudian Motorola 68020 s) menyediakan sesuatu yang disebut DFS (sistem file terdistribusi) yang
//foo/bar
merujuk pada/bar
file difoo
server dfs. Itu kemudian usang oleh Sun's NFS.Sayangnya, saya belum referensi untuk mendukung itu tetapi saya akhirnya mungkin menemukan beberapa dokumentasi Utek di ruang bawah tanah saya dan memperbarui balasan ini.
sumber
find
misalnya melintasi titik mount. Penulis secara eksplisit//foo/bar
/../foo/bar
Mengikuti petunjuk dari jawaban ini . Dan membaca halaman 2-15 dari manual dari Bitsavers (terima kasih @grawity ).
Ada juga manual yang lebih tua dari dengan "First Printing: July, 1985". Di halaman 1-4:
Jadi, kami mendapat konfirmasi bahwa Domain / OS dari Apollo digunakan
//
untuk root jaringan.sumber
Aplikasi lain: Blender memperlakukan terkemuka
//
sebagai referensi ke direktori proyek (direktori di mana.blend
file disimpan). Inilah halaman buku panduan yang relevan .Ini berlaku untuk sistem operasi yang tidak seperti Unix (yaitu, Windows) juga.
sumber
Proyek ReactOS - yang merupakan implementasi bebas dan open-source dari kernel NT dan API terkait - rupanya dilakukan untuk juga menerapkan subsistem POSIX seperti Interix sendiri (meskipun subsistem OS / 2 MS asli juga disebutkan dalam konteks , tidak disebutkan) terbuat dari analog ReactOS) .
Meskipun upaya sejauh ini kecil ,
fork()
tampaknya merupakan kenyataan. Berikut adalah kutipan dari halaman proyek subsistem, seperti yang tercantum di bawah masalah terbuka :Saya tidak yakin bagaimana itu memenuhi syarat karena saya tidak yakin berapa banyak dari itu telah diterapkan, tetapi saya pikir itu adalah deskripsi yang berguna tentang masalah.
sumber
//foo/bar
penanganan. Saya belum menemukan bukti kuat bahwa subsistem Windows POSIX atau Interix benar-benar menanganinya sejauh ini.lsacl
perintah MKS ditentukan untuk memahami\\machinename\driveletter:\path
sementararegistry
perintahnya ditentukan untuk memahami bentuk itu atau secara opsional memilih//
kedua cara. Karena kit MKS adalah pendahulu untuk Interix dan apa yang dikirimkan MS untuk versi 1/2 saya akan berpikir Interix harus menerima sintaks yang kompatibel untuk hal mendasar seperti itu.Pada 1980-an, SEL / Gould memiliki sistem operasi Unix yang disebut UTX-32 yang setara dengan di Solaris; yaitu jalur akses jarak jauh pada host . Saya tidak dapat menemukan dokumentasi apa pun di dalamnya, jadi saya tidak tahu apakah ini adalah RFS atau evolusi paralel (atau apakah AT&T
//host/path
/net/host/path
path
host
mencurimendapatkannya dari Gould).sumber
//host/path
di UTX-32), kebetulan?Saya memiliki memori yang tidak jelas bahwa
//host/path
notasi tersebut digunakan pada AT&T SysV.3 sebagai bagian dari implementasi Berbagi File Jarak Jauh RFS . Ini akhirnya ditinggalkan sekitar waktu SysV.4 dirilis untuk NFS yang lebih sederhana namun lebih populer dari Sun Microsystems.Namun, saya tidak dapat menemukan referensi konkret ke sintaks, dan dokumentasi yang telah saya ulas tadi sepertinya menunjukkan bahwa gagasan pengguna secara eksplisit menentukan nama host jarak jauh akan bertentangan dengan prinsip desain independensi lokasi.
Referensi 1. Tinjauan arsitektur RFS
sumber
//host/path
. Tampaknya menyiratkan bahwa sistem file jaringan harus dipasang secara eksplisit.POSIX menyatakan dalam Dasar Pemikiran untuk A.4.12. Path Path Resolution Paragraphs 9 and 10:
Tampaknya ini mengkonfirmasi bahwa itu
//
berarti "root jaringan", atau setidaknya itu adalah ide ketika aturan dimasukkan dalam POSIX.Aturan mengikuti untuk menghapus makna apa pun
//
di tengah jalur untuk/
Pathname yang dimulai:Tentu saja,
//
Pathname yang dimulai dapat memperluas atau mengubah penggunaan//
di dalam Pathname (bukan di awal). POSIX.1 memungkinkan ini. Yang terakhir ini mengkonfirmasi bahwa satu-satunya yang//
diizinkan adalah di awal Pathname.sumber