Por que cd ..
, digitado na pasta raiz, não avisa ou falha com um erro?
Eu esperaria:
/$ cd ..
-bash: cd: ..: No such file or directory
Em vez disso, sou deixado em /
. Claro, isso ocorre desde ..
que existe /
e é simplesmente /
, exatamente como .
. Eu só me pergunto por que é assim.
directory
cd-command
Bach
fonte
fonte
Respostas:
De acordo com o Open Group (responsável pelo padrão POSIX):
(Fonte)
fonte
Você não recebe um erro porque mesmo o
/
diretório realmente possui uma entrada de diretório válida..
, mas diferente de outros diretórios, ele aponta para o próprio diretório e, portanto, se comporta de maneira idêntica a.
:Como a primeira coluna indica,
.
,..
, e/
todos têm o mesmo inode-número e, portanto, são as mesmas entradas do sistema de arquivos.Assim, mesmo se você
cd ..
dentro de/
você apenas ficar em/
.fonte
..
entrada do diretório está lá./
como qualquer outra pasta, incluindo uma entrada válida para..
. Caso contrário, você teria que tratar de maneira/
diferente em comparação com todas as outras pastas do sistema.Está lá porque removê-lo exigiria a criação de código de tratamento de caso especial no kernel e nas bibliotecas C. No momento, você pode assumir que sempre haverá um '.' e '..' em qualquer diretório que você acessa.
O único código de caso especial necessário no momento é o código de montagem do sistema de arquivos, em que o código substitui o valor do inode '..' para apontar para o diretório que contém o ponto de montagem, pois os diretórios raiz nem sempre são diretórios raiz.
fonte
mount
comando e seu arquivo especial associado/etc/fstab
.Outra forma de verificar o que
.
e..
em/
realmente é:Como você pode ver,
.
e..
é apontado/
.fonte
Outro motivo para '..' está em / é que, se não estivesse lá, criaria outro caso especial: o diretório raiz teria um link físico menor que todos os outros diretórios (todos os nós de diretório têm n + 2 links, em que n é o número de subdiretórios diretos internos). Isso interromperia vários programas que dependem da otimização das verificações de diretório.
fonte
É bom que esteja lá, porque, caso contrário, eu não seria capaz
../../../../
de enviar spam para obter a raiz de uma pasta. Se não permitisse a..
raiz, eu ficaria preso contando o número de pastas no diretório que está funcionando.fonte
cd /
?../
é melhor. Também faço muitas operações de arquivo em PHP, onde não posso fazer/
por vários motivos.../
opere (ou remova) um arquivo que não pretendia sem erro.../
mais vezes do que o necessário e desejar que ele funcione como pretendido parece um erro lógico (inativo) para mim, mesmo que o sistema de arquivos aparentemente permita.