..
é um link físico para o diretório pai que é criado como parte da entrada de diretório.
Se você emitir ls -ail
em cada um desses diretórios, verá que as entradas a seguir têm o mesmo inode
(primeiro campo) e a contagem de hard link (terceiro campo):
-
..
ao executarls -ail
eminner
-
.
ao executarls -ail
emmiddle
-
middle
ao executarls -ail
emouter
Now, /outer/middle/inner/.. leads to /outer/middle/, but if I access it through the symbolic link, /outer/inner/.. leads to /outer/. It seems that there are two different .. here.
Existe uma entrada ..
em inner
. Se o seu diretório de trabalho atual for outer
, você deverá ver os mesmos resultados (uma listagem de diretório de middle
) de
-
ls -al inner/..
-
ls -al middle/inner/..
A única situação em que "acessar" ..
através do link simbólico deve fornecer comportamento diferente é se você cd
into inner
usando o link simbólico, para que seu diretório de trabalho lógico ( pwd -L
) difere do seu diretório de trabalho físico ( pwd -P
). Nesse caso, cd ..
o levará de volta a outer
não porque há uma entrada ..
diferente, mas porque seu shell está acompanhando seu lógico diretório de trabalho e popping você fora de um nível, em vez de referenciar a entrada ..
real em inner
.
Essa é uma conveniência fornecida, por exemplo, bash
como parte do comando cd
interno. Você pode sobrescrever isso pedindo que mude para a entrada ..
real com
cd -P ..
onde -P
instrui cd
(como em pwd
acima) para usar o caminho físico.