どのシステムで// foo / barは/ foo / barと異なるのですか?


114

POSIX仕様の全体にわたって、規定(があります123の実装は、2から始まるパスを治療することを可能にする...)/特別。

POSIXアプリケーション(すべてのPOSIX準拠システムに移植できるようにPOSIX仕様に記述されたアプリケーション)//foo/barは、それが同じであると想定することはできません/foo/bar(ただし///foo/bar、同じであると想定できます/foo/bar)。

今、//foo特別に扱うそれらのPOSIXシステム(歴史的で、まだ維持されている)は何ですか?私はPOSIXの提供がMicrosoftによってUnixバリアント(XENIX)とWindows POSIXレイヤー(おそらく誰でも確認できますか?)のためにプッシュされたと信じました(今では間違っいることが証明されました)。

これは、Microsoft WindowsのPOSIXのようなレイヤーでもあるCygwinによって使用されます。Microsoft Windows以外のシステムはありますか?OpenVMS?

//foo/bar特別なシステムでは、何に使用されますか?//host/pathネットワークファイルシステムにアクセスするには?仮想ファイルシステム?

Unixライクで実行される一部のアプリケーションは(システムのAPI //foo/barではない場合)、パスを特別に処理しますか(そうでなければ/foo/bar、ファイルシステム上のパスとして処理するコンテキストで)。


編集それから私は//foo/bar仕様の取り扱いの起源についてオースティングループのメーリングリストで質問しました、そして議論は興味深い読み物です(少なくとも考古学の観点から)。



1
@OlivierDulac号はls -ld ///また、表示していました///lsただそれが与えられたとして、表示するように言われているファイルを表示します。Cygwinのように(ファイルシステム上のパスとしてではなく)// foo / varを特別に処理するシステムまたはアプリケーションを探しています。
ステファンシャゼラス

1
標準(pubs.opengroup.org/onlinepubs/009695399/basedefs/…)は、あなたが言及したように、「2つの連続するスラッシュで始まるパス名は実装定義の方法で解釈される場合がある」と言います(2つ以上は1に解決されます) 。ネット上で見つかった例:austingroupbugs.net/view.php?id=83IBM'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....正確にunixではありませんが、^^)。
オリビエデュラック

4
@DevSolar:本当に興味深い(そして驚くべき)が、POSIXからは何でもできるので、POSIXのみに固執する必要がある^^
オリビエデュラック

2
@edwardtorvaldsは、最初のビットがURLであるため:file://、同様にhttp://など。作業中のchromeでは、現在開いているWindows UNCパスはfile:////$MACHINE/$SHARENAME/index.html(何らかの理由で理解しますがfile://$MACHINE/...
16年

回答:


90

これは、これまでに与えられた回答の編集と索引です。この投稿はコミュニティWikiであり、100以上の評判を持つ誰でも編集でき、誰からも評判を得ることはできません。自由にあなた自身の答えを投稿し、ここにリンクを追加してください(または私がそれをするのを待ってください)。理想的には、この回答は要約である必要があります(短いエントリで、他の個々の回答には詳細が含まれます)。

現在アクティブに維持されているシステム:

機能停止システム

//foo/barパスを特別に扱うアプリケーション


3
//名前空間の使用は、Reiser4のメタデータ機能のために一部のLinuxカーネル開発者によって提案されましたが、この提案がNamesys内で勢いをつけたり、実装されたりしたことはないと思います。
ヨルグWミットタグ

Windows自体がPOSIX APIを実装しています...先行ダブルスラッシュをどのように処理しますか?
ケビン

1
ウェブ上で、ダブルスラッシュで始まるリソースがシングルスラッシュとは異なるルートを定義することを追加できます。
アレックスギットマイヤー

@Kevin、はい、私もそれを信じています(質問を参照)が、それはオプションのコンポーネントであり、Windowsの一部のバリアントのみで、現在廃止されていると思います。詳細があれば、回答を追加してください。
ステファンシャゼラス

@AlexGittemeier。はい、この回答で実際に使用されていることに気付くでしょう;-)。
ステファンシャゼル

16

Unixライクで実行される一部のアプリケーション(システムのAPIではない場合)は、// foo / barパスを特別に処理しますか?

//depot/A/B/C/Dパスを使用してデポを参照するPerforceを認識しています。//Client/C/Dクライアントがを指して//depot/A/B/いる場合、Perforceはパスもサポートします。ここでは、ローカルファイルシステムにこれらのパスがない場合があります。

p4 filelog //depot/A/B/C/Dfileがなくても、そのファイルの履歴が表示されます/depot/A/B/C/D

p4 filelog C/D 適切なディレクトリから実行された場合、そのファイルの履歴も表示されます。

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


13

数十年前、Tektronix Utek(BSD 4.2ベースのUnix、最初にNational Semiconductors 32016 CPU、次にMotorola 68020に搭載)はDFS(分散ファイルシステム)と呼ばれるものを提供//foo/barし、その下でdfsサーバー/bar上のファイルを参照していましたfoo。その後、SunのNFSによって廃止されました。

残念ながら、私はまだそれを裏付けることを参照していませんが、最終的に私のセラーでいくつかのUtekのドキュメントを見つけて、この返信を更新するかもしれません。



@StéphaneChazelasUsenet ディスカッションへのこのリンクの方が良いと思います。選択したものにはDomain / OSがありますが、Utekはありません。または次のメッセージ(あなたから)


Tektronix / BSD RFS実装はfind、たとえばマウントポイントを通過しないように、明らかにリモートファイルシステムを通常のファイルにマウントしました。著者は明示的に除外//foo/bar(またはニューカッスル接続の/../foo/bar存在)
ステファンChazelas


7

この答えからのリードに従って。また、Bitsaversのマニュアルの 2-15ページを読んでください(@grawityに感謝)。

共有データ
Domain / OS分散ファイルシステムの2番目の設計原則(デフォルトで共有)は、グローバルな統一ネームスペースを意味します。分散ファイルシステムの名前空間は、巨大なタイムシェアリングファイルシステムの名前のようにユーザーに表示されます。これは、絶対パス名がネットワークルートの名前(//と呼ばれる)で始まることができることを除いて、従来のUNIX階層名前空間です。ローカルノードのルート(/ディレクトリ)に相対するパス名を表現することもできます。

「最初の印刷:1985年7月」の古いマニュアルもあります。1-4ページ:

図1-2の二重スラッシュ(//)は、ネーミングツリーの最上位レベルであるネットワークルートディレクトリを表します。

したがって、ApolloのDomain / OS //がネットワークルートに使用されたことを確認できます。


gな男は主要なLinux開発者だと思います。
mikeserv


5

ReactOSプロジェクト- NTカーネルと関連APIの自由とオープンソース実装です-明らかに、独自の実装に着手したのInterix様POSIXサブシステムをMS独自のOS / 2サブシステムもされているが(文脈で言及した、全く言及しませんReactOSアナログで作られています

努力は、これまでしてきたが、小さなfork()明らかに現実です。未解決の問題にリストされているサブシステムのプロジェクトページからの抜粋を以下に示します

パス

POSIXアプリケーションでWin32パスを使用する最良の方法は何ですか?アイデア:

  • 変換//<device>/<path> \\.\<device>\<path> (ドライブ文字の特別な場合- //<letter>/<path>=> <letter>:\<path>-および特別なエスケープ//./<raw text>=>で\\.\<raw text>UNCパスを指定できます//unc/<path>//パスは実装固有の動作のために標準で予約されており、//<letter>/Win32パスをエスケープする構文は既存のPOSIX互換環境で広く使用されています

  • 「裸の」Win32パスを認識するためのヒューリスティック

  • Win32パスおよび//パスの大文字と小文字を区別しない検索(標準では、この種の実装固有の//パスの動作が許可されていますか?)

どれだけ実装されているのかわからないので、それがどのように適格であるかは分かりませんが、問題の有用な興味深い説明だと思いました。


XENIXにはPOSIXサブシステムがなく、WindowsにはAFAIKがありました。XENIXはUnixでした(当初はMicrosoftがAT&Tからライセンスを購入したUnix V7に基づいていました)。
ステファンシャゼル16年

1
ニース読むここ INTERIX / WindowsのPOSIXサブシステムについても同様に
ステファンChazelas

@StéphaneChazelas-かなり。私はリンクをそれに置き換えたいと思っていますが、それは最後に少し意見に基づいており、実際には参照として機能しません...しかし、コメントを削除しないでください?
mikeserv

いずれにせよ、//foo/bar処理については言及していません。Windows POSIXサブシステムまたはInterixが実際にそれらを実際に処理したという強力な証拠は見つかりませんでした。
ステファンシャゼル16年

@StéphaneChazelas -それはちょうど非常にincosistentだった場合、私は知らない、または除外あれば、必要に応じて一部はちょうど監督だったが、MKSのlsaclコマンドを理解するためにspec'dされ\\machinename\driveletter:\path、その一方、registryコマンドがそのフォームまたは理解するためにspec'dた、必要に応じて//いずれかの方法を。MKSキットはInterixの前身であり、MSがバージョン1/2向けに出荷したものであったため、Interixはそのような基本的なことについて互換性のある構文を受け入れたに違いないと思います。
mikeserv

4

1980年代、SEL / GouldにはUTX-32と呼ばれるUnixオペレーティングシステムがあり、Solaris と同等 でした。すなわち、host上のリモートアクセスパス。私はそれに関するドキュメントを見つけることができないので、これがRFSであったか並列進化であったか(またはAT&T//host/path/net/host/pathpathhostストール グールドから取得しました)。


ありがとう。//host/path偶然、それについて(UTX-32で)何か参考になることがありますか?
ステファンシャゼラス

それは私が私の屋根裏部屋でボックスにハードコピー文書を持っている可能性がありますが、そう- (1)私は覚えていません。今まで(私は5分経口ブリーフィングを覚えている)文書の多くを持ちます。(2)持っていたとしても、家に持ち帰っていないかもしれない。(3)たとえそれを家に持ち帰ったとしても、私はおそらく過去30年以内にそれを捨てたでしょう。(4)まだ持っていても、おそらく見つけられないでしょう。また、(0)回答を投稿する前に、5分間グーグルして(無駄に)過ごしました。
スコット

4

//host/pathAT&T SysV.3では、RFSリモートファイル共有の実装の一部として表記法が使用されていたという漠然とした記憶があります。これは、SysV.4がリリースされた頃に最終的に放棄され、Sun Microsystemsのよりシンプルで人気のあるNFSが採用されました。

ただし、構文への具体的な参照は見つかりません。今レビューしたドキュメントでは、ユーザーがリモートホスト名を明示的に指定するという考え方は、場所の独立性の設計原則に反していたことを示しているようです。

参考資料1. RFSアーキテクチャの概要


3
Founf この RFSについて。への参照が見つかりません//host/path。ネットワークファイルシステムを明示的にマウントする必要があることを意味するようです。
ステファンシャゼル

お知らせいただきありがとうございます。これは「私がレビューしたドキュメント」の一部であるため、気にしない場合はリンクを追加します。私はまだこれについて困惑しています。翌日かそこらに来るかもしれません。
ロアイマ

4

POSIXは、A.4.12パス名解決パラグラフ9および10 の根拠に次のように述べています。

一部のネットワークシステムでは、/ .. / hostname /構造が別のホストのルートディレクトリを参照するために使用され、POSIX.1はこの動作を許可します。

他のネットワークシステムでは、同じ目的で//ホスト名を使用します。つまり、二重の最初のスラッシュが使用されます。

これ//「ネットワークルート」を意味すること、または少なくともそれがPOSIXに含まれていたときのアイデアであったことを確認しているようです。


開始されたパス名のパスの//途中にある意味を削除するための規則が続き/ます。

... 2つ以上の<slash>文字の非先頭シーケンスが
単一の<slash>として扱われるため、...

もちろん、//開始されたパス名は//、(開始時ではなく)パス名内の使用を拡張または変更する場合があります。POSIX.1ではこれが可能です。これは最後//に、パス名の先頭にのみ許可されていることを確認します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.