Это не кэширование.
Вы должны понимать, что в UNIX-подобных операционных системах существует различие между именем файла, самим файлом и его содержимым. Например, файл может быть найден по адресу /home/adam/myfile
, но это соответствует 'inode' в базовой файловой системе. Жесткая ссылка - это другое имя для того же inode. Инод связан с некоторыми данными в другом месте, поэтому cat myfile
включает в себя запрос в текущем каталоге, какой инод связан с myfile, поиск этого инода (обычно на диске), а затем поиск данных, с которыми связан этот инод.
Это справедливо и для каталогов, только их содержимое отличается от содержимого обычных файлов, поскольку их содержимое состоит из карт имен файлов к инодам.
Поэтому, когда вы меняете свой рабочий каталог на /home/adam/cd2/adam_dev/rsim
, выполняется поиск фактического узла каталога с таким именем. По прошествии некоторого времени; возможно, другой процесс переместит каталог на другой путь (перемещение в UNIX обычно больше похоже на переименование), или каталог по какой-либо другой причине будет отсоединен от родительского каталога (т.е. удален из списка файлов родительского узла каталога); имя /home/adam/cd2/adam_dev/rsim
может больше не сопоставляться с тем же узлом каталога, или вообще ни с чем. Этот узел каталога все еще существует, возможно, в другом месте файловой системы, и именно это вы видите, когда выполняете ls .
(.
- это фактически жесткая ссылка, которая есть у каждого каталога и указывает на него самого. Это реальная вещь в файловой системе, а не просто синтаксис, означающий "текущий каталог").