Por que existe um // diretório?

2

Acabei de encontrar um recurso muito estranho (bug?) com o sistema de arquivos do meu computador. Eu posso fazer cd // e ele irá para o diretório // , mas exibirá todos os mesmos arquivos que o diretório / . Por que é isso? Se eu cd .. em / , ele permanecerá em / . // é o único que funciona - eu tentei várias barras, mas ficou em / .

    
por CoffeeRain 16.03.2012 / 20:25

3 respostas

9

Da especificação POSIX :

3.266: ... Múltiplas barras sucessivas são consideradas as mesmas que uma barra.

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

A segunda parte significa que um caminho que começa com // pode ter um significado especial. Isso raramente é usado, e pode ser uma fonte de bugs: link .

    
por 16.03.2012 / 20:32
0

Não há diferença entre // e /. É apenas bash ser tolerante com várias barras.

Note que você também pode usar // em caminhos e não irá reclamar, e irá tratá-los como /.

    
por 16.03.2012 / 20:31
0

Parece que o Bash irá normalizar nomes de caminho, mas não normaliza barras duplas no início de um nome de caminho. Isso é compreensível, como em alguns sistemas Unix (embora não no Mac OS X), // pode indicar um caminho de rede e o Bash se destina a ser portátil. Veja esta questão no Unix.SE para a barra dupla questão.

Já que no Mac OS X // não tem nenhum significado especial, você está na verdade em / .

    
por 16.03.2012 / 20:33