O que é o diretório "//"?

12

Em várias máquinas Linux você pode

cd /

e

cd //

O shell diz que o diretório atual é '/' ou '//' depois de usar o comando correspondente.

Portanto, a pergunta é: qual é a diferença entre '/' e '//' e, se a resposta for 'sem diferença', por que '//' é mostrado diferentemente de '/'

BTW

cd ///
cd ////
cd /////

Todos resultam no shell dizendo que o diretório atual é '/'

Heres uma sessão de exemplo:

[user@host /]$ cd //
[user@host //]$ cd /
[user@host /]$ cd //
[user@host //]$ cd /
[user@host /]$
sylvanaar
fonte
2
Parece ser uma anomalia específica do bash. Se você tentar cd //em csh ou zsh e, em seguida, pwdele irá mostrar apenas '/'
Doug Harris
interessante - que lança alguma luz sobre ela
Sylvanaar
1
Para comparação: cd //usr/binfornece "// usr / bin", mas cd /usr//binfornece "/ usr / bin" (no Bash).
Pausado até novo aviso.

Respostas:

14

Vamos perguntar ao homem (Chester Ramey):

E10) Por que 'cd //' deixa $ PWD como '//'?

O POSIX.2, em sua descrição de 'cd', diz que três ou mais barras principais podem ser substituídas por uma única barra ao canonizar o diretório de trabalho atual.

Presumo que isto seja para compatibilidade histórica. Certas versões do Unix e sistemas de arquivos de rede anteriores usavam caminhos no formato // hostname / path para acessar 'path' no servidor 'hostname'.

Pausado até novo aviso.
fonte
Muito melhor resposta do que a (boa já bastante) um de John T.
innaM
9

Não é um diretório real, é um problema específico do bash. É referenciado no The Linux Documentation Project .

John T
fonte
4
por que ninguém corrigiu isso? ou eles têm?
sylvanaar 14/10/09