Diferença entre diretórios / e // no bash OSX


3

Eu estava trabalhando no terminal bash no meu sistema (OSX 10.8.3 / bash versão 3.2.48 (1) -release (x86_64-apple-darwin12)) e acidentalmente digitei "cd //" em vez de "cd /" para volte para o diretório raiz.

Coisa estranha foi que me levou para "//" que quando eu listei parecia exatamente como "/".

Então, minhas perguntas são: Existe alguma diferença semântica entre esses dois caminhos?
E se alguma coisa é o propósito desses dois caminhos?  e / ou é um bug?

Respostas:


5

No Unix e derivados, barras múltiplas seguindo uma a outra carregam o mesmo significado que uma barra. O OS X é certificado Unix e, assim, segue essa especificação.

De Única especificação Unix sobre o nome do caminho :

[Um caminho] tem uma barra inicial opcional, seguida de zero ou mais nomes de arquivos separados por barras. Um nome de caminho pode conter, opcionalmente, uma ou mais barras à direita. Múltiplas barras sucessivas são consideradas as mesmas que uma barra.

O único caso especial é um caminho que começa com //. Sua interpretação depende da implementação (ver Resolução do Pathname no SUS ):

Um nome de caminho que comece com duas barras consecutivas pode ser interpretado de uma maneira definida pela implementação, embora mais de duas barras sejam tratadas como uma única barra.


1
NOTA: o lugar mais visto onde // é especial é cygwin, onde é o análogo do \\ filer \ volume \ UNC caminho.
Rich Homolka
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.