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?

Justin Ohms
fonte

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.

slhck
fonte
1
NOTA: o lugar mais visto onde // é especial é cygwin, onde é o análogo do \\ filer \ volume \ UNC caminho.
Rich Homolka