絶対パス/正規パス/相対パスの違いは何ですか?
絶対は/
で始まると思います 。 /../
を含めることはできますか ?
正規パスは、/../
を含めることができないという点で絶対パスとは異なります。 ?
foo
です 相対パス?
グーグルposix canonical path
あまり現れませんでした…これらの用語のPOSIXリファレンスは何ですか?
承認された回答:
POSIXは、「絶対パス名」を次のように定義しています。
1つまたは3つ以上の<スラッシュ>文字で始まるパス名
および「相対パス名」は次のとおりです。
<スラッシュ>文字で始まらないパス名。
相対パスと絶対パスについては、これですべてです。
正規パスはPOSIXで定義されていませんが、この用語は通常、同等のパスを指します。つまり ファイルシステムオブジェクトへの2つのパスを取り、それらを標準形式に変換する場合、2つのファイルシステムオブジェクトが同一である場合に限り、結果は同一である必要があります。これには、おっしゃるように「..」を削除することが含まれますが、シンボリックリンクを解決することも意味します。したがって、正規パスは次のように定義できます
「。」を除く、すべてのコンポーネントが実際のディレクトリまたはファイルであるパス名。および「..」であり、スラッシュが繰り返されていない
POSIX用語では、正規パス名は事実上解決されたパス名です(正規パス名は、存在するファイルシステムオブジェクトに対してのみ決定できることを受け入れる限り)。
これは、ハードリンクされたディレクトリが許可されていないためにのみ機能することに注意してください…
だからあなたの質問に答えるために:
- 絶対パスには
/../
を含めることができます; - 正規パスに
/../
を含めることはできません 、/./
を含めることもできません 、//
(ほぼ間違いなく最初の位置を除く)、またはシンボリックリンク; -
foo
は相対パスです。
(通常、これらはすべてパスの名前です 、パスだけではありません。)