схема файла uri и относительные файлы

<p>предположим, что схема для uri является «файлом». также предположим, что путь начинается с '.' </p><p>пример пути - «./.bashrc». как бы выглядел фуллури? 'file: //./.bashrc' кажется мне странным. </p>

<p>короче говоря, url файла имеет вид:</p><pre><code>file://localhost/absolute/path/to/file [ok] </code></pre><p>или вы можете опустить хост (но не слеш):</p><pre><code>file:///absolute/path/to/file [ok] </code></pre><p>но не это</p><pre><code>file://file\_at\_current\_dir [no way] </code></pre><p>ни это</p><pre><code>file://./file\_at\_current\_dir [no way] </code></pre><p>я только что подтвердил это через pyll's urllib2.urlopen ()</p><p>подробнее с <a href="http://en.wikipedia.org/wiki/file\_uri\_scheme">http://en.wikipedia.org/wiki/file\_uri\_scheme</a> :</p><pre><code>"file:///foo.txt" is okay, while "file://foo.txt" is not, although some interpreters manage to handle the latter </code></pre>

<p>невозможно использовать полный файл: uri с '.' или «..» сегменты в пути без корневой части этого пути. используете ли вы «file: //./.bashrc» или «file: ///./.bashrc», эти пути не будут иметь смысла. если вы хотите использовать относительную ссылку, используйте ее без протокольной/авторитетной части:</p><pre><code><a href="./.bashrc">link</a> </code></pre><p>если вы хотите использовать полный uri, вы должны указать корень, относительно которого ваш относительный путь:</p><pre><code><a href="file:///home/kindrik/./.bashrc">link</a> </code></pre><p>согласно <a href="https://tools.ietf.org/html/rfc3986">rfc 3986</a> </p><pre><code>the path segments "." and "..", also known as dot-segments, are defined for relative reference within the path name hierarchy. they are intended for use at the beginning of a relative-path reference (section 4.2) to indicate relative position within the hierarchical tree of names. this is similar to their role within some operating systems' file directory structures to indicate the current directory and parent directory, respectively. however, unlike in a file system, these dot-segments are only interpreted within the uri path hierarchy and are removed as part of the resolution process (section 5.2). the complete path segments "." and ".." are intended only for use within relative references (section 4.1) and are removed as part of the reference resolution process (section 5.2). however, some deployed implementations incorrectly assume that reference resolution is not necessary when the reference is already a uri and thus fail to remove dot-segments when they occur in non-relative paths. uri normalizers should remove dot-segments by applying the remove\_dot\_segments algorithm to the path, as described in section 5.2.4. the complete path segments "." and ".." are intended only for use within relative references (section 4.1) and are removed as part of the reference resolution process (section 5.2) </code></pre><p>rfc 3986 описывает даже алгоритм удаления этих "." и ".." из uri.</p>

<p>в терминале вы можете напечатать «file: //$pwd/.bashrc», используя «$ pwd» для ссылки на текущий каталог.</p>

<p>вы не должны ставить двойную косую черту после <code>file:</code>. правильная форма</p><pre><code>'file:.bashrc' </code></pre><p>см. <a href="https://tools.ietf.org/html/rfc3986#section-3.3">rfc 3986</a> , <code>path-rootless</code> определение</p>

<p>я не знаю ваш вариант использования. </p><p>у меня аналогичная потребность в коде моего узла, поэтому, когда мне нужен url-адрес файла относительно моего рабочего каталога, я создаю url-адрес примерно так ...</p><pre><code>const url = "file://" + process.cwd() + "/" + ".bashrc"; </code></pre>

<p>в сценарии оболочки unix мне удалось пойти с этим:</p><pre><code>file://`pwd`/relative-path </code></pre><p>в вашем конкретном случае:</p><pre><code>file://`pwd`/.bashrc </code></pre>