'cd //; pwd '# O que está acontecendo aqui? [duplicado]

1

Um colega de trabalho acabou de apontar algo estranho e estou curioso para saber qual poderia ser a explicação.

Nos sistemas que eu tentei, cd / ',' cd // 'e' cd /// 'têm o efeito de alterar o diretório para a raiz do sistema de arquivos. No entanto, 'cd /; pwd 'e' cd ///; pwd 'retorna uma resposta de' / ', mas' cd //; pwd 'retorna' // ', mesmo sendo a raiz do sistema de arquivos, como nos outros casos.

O que dá?

    
por bgvaughan 24.11.2015 / 21:42

2 respostas

2

Alguns sistemas usaram barras duplas para representar nomes de host em uma rede, por exemplo,

//host/usr/bin

e POSIX dá um aceno a esse uso na descrição de cd :

An implementation may further simplify curpath by removing any trailing characters that are not also leading <slash> characters, replacing multiple non-leading consecutive characters with a single <slash>, and replacing three or more leading characters with a single <slash>. If, as a result of this canonicalization, the curpath variable is null, no further steps shall be taken.

Por exemplo, as estações de trabalho Apollo fizeram isso (consulte por que //, #, etc? no FAQ de Tim Berners-Lee.

    
por 24.11.2015 / 21:56
2

Existem duas fontes possíveis de pwd no meu sistema: pwd o bash builtin e /usr/bin/pwd , que vem do GNU coreutils. Quando eu emito o cd //; pwd (usando o shell embutido), ele digita // . No entanto, quando emito cd //; /usr/bin/pwd (usando o externo), ele digita / . O diretório de trabalho real em ambos os casos, conforme evidenciado por ls output e tal, é sempre o mesmo (a raiz FS).

Assim, a resposta parece ser que há dois conceitos diferentes envolvidos: a ideia do shell de seu diretório de trabalho e o processo real CWD. O pwd embutido consulta o primeiro, enquanto /usr/bin/pwd (e qualquer outro binário) só terá acesso ao último, e é apenas o primeiro que sabe alguma coisa sobre // . Por que o conceito de shell de um diretório de trabalho faz distinção entre / e // e o que // significa, não faço ideia.

EDIT: Alguma pesquisa se depara com esta questão , que lança alguma luz . Aparentemente, o comportamento estranho é compatível com os padrões, embora ainda seja estranho.

    
por 24.11.2015 / 21:47