Допустим, у вас есть каталоги /dir1
и /dir2/linked
, где последний является символической ссылкой на первый.
Когда вы cd
в linked
и pwd
вы получите выход /dir2/linked
. Если вы тогда cd ..
, вы будете надеты /dir2
. Такое поведение согласуется с концепцией того, что вы были /dir2/linked
раньше. Однако, насколько я понимаю, родительский каталог ( ..
) любого каталога хранится в каталоге inode (то есть: физически на диске). Очевидно, что поскольку /dir2/linked
это действительно /dir1
, родительский каталог в inode должен быть/
Чтобы еще больше усложнить дело, пока внутри /dir2/linked
, выходы ls ..
и cd .. ; ls .
разные! Кажется, что он cd
чтит символический путь, а ls
"физический" путь. Как уже упоминалось в этом вопросе , есть cd -P
для этого варианта использования, хотя.
man pwd
упоминает "физические" и "логические" рабочие каталоги, но у меня все еще есть несколько вопросов на данный момент:
- Всегда ли это поведение обеспечивается
PWD
переменной среды, как упомянуто вman pwd
? - Почему по умолчанию
cd
иls
имеют различное поведение, если они обе команды оболочки (то есть: не программы)? - Использует ли типичная программа (не команда оболочки)
PWD
вместо физического пути? Я понимаю, что это до реализации, но есть ли какое-то правило?