O que é o diretório de barra dupla (//)?

29

Eu digitei por engano em cd //vez de cd /. Para minha surpresa, o diretório atual apareceu como //.

O que é esse diretório? Por que isso existe?

apple@snipped $ pwd
/home/apple
apple@snipped $ cd /
apple@snipped $ pwd
/
apple@snipped $ cd //
apple@snipped $ pwd
//
apple@snipped $ cd ///
apple@snipped $ pwd
/
Zabba
fonte

Respostas:

42

//geralmente é o mesmo que /. ///deve ser o mesmo que /.

lsteria mostrado a você que o cd //levou ao diretório raiz, o mesmo que cd /faz.

$ cd /
$ ls
bin
boot
dev
...
$ cd //
$ ls
(same as above)

A maneira técnica de confirmar se eles são definitivamente o mesmo diretório é:

$ cd /
$ stat -c "%i" .
2
$ cd //
$ stat -c "%i" .
2

eles imprimirão o mesmo número de inode, o que significa que são a mesma coisa.

Os detalhes sangrentos estão documentados na especificação de resolução de nome de caminho POSIX :

Um nome de caminho que consiste em uma única barra deve ser resolvido para o diretório raiz do processo. Um nome de caminho nulo não deve ser resolvido com êxito. 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 principais sejam tratadas como uma única barra.

Mikel
fonte