Isso não é cache.
Você precisa entender que, em sistemas operacionais semelhantes a UNIX, há uma distinção entre o nome de um arquivo, o próprio arquivo e seu conteúdo. Por exemplo, um arquivo pode ser encontrado em /home/adam/myfile
, mas isso é mapeado para um 'inode' no sistema de arquivos subjacente. Um hardlink é um nome diferente para o mesmo inode. O inode mapeia para alguns dados em algum outro lugar, então cat myfile
envolve perguntar ao diretório atual que inode está associado a myfile, procurando o inode (normalmente no disco) e procurando pelos dados que o inode mapeia.
Isto também é verdadeiro para diretórios, exceto que seus conteúdos são diferentes dos arquivos regulares, já que seu conteúdo consiste em mapas de nomes de arquivos para inodes.
Assim, quando você altera seu diretório de trabalho para /home/adam/cd2/adam_dev/rsim
, uma pesquisa é feita para localizar o nó do diretório real com esse nome. Depois de algum tempo passa; talvez outro processo mova o diretório para outro caminho (uma mudança no UNIX geralmente é mais como uma renomeação), ou o diretório é para qualquer outro motivo desvinculado do diretório pai (ou seja, removido da lista de arquivos do nó do diretório pai) ; o nome /home/adam/cd2/adam_dev/rsim
pode não ser mais mapeado para o mesmo nó de diretório ou pode não mais mapear para nada. Esse nó de diretório ainda existe, talvez em algum outro lugar no sistema de arquivos, e é isso que você está vendo quando você executa ls .
( .
é como um hardlink que todo diretório tem que aponta para si mesmo. É uma coisa real no sistema de arquivos, não apenas a sintaxe para significar 'o diretório atual').