
Мой основной вопрос: почему оба этих пути указывают на дом (т.е. ~
)? Это указывает на один и тот же дом или он дублируется?
Сомневаюсь, что он дублируется, а если нет, то как cd ..
решить, в какой каталог меня перенаправить?
решение1
Поведение cd ..
будет зависеть от оболочки, ее настроек и от того, задействованы ли (что, скорее всего, и произошло в данном случае) символические ссылки.
bash-4.1$ cd /var/tmp
bash-4.1$ mkdir -p real/cats
bash-4.1$ ln -s real/cats dogs
bash-4.1$ cd dogs/
bash-4.1$ pwd
/var/tmp/dogs
bash-4.1$ pwd -P
/var/tmp/real/cats
bash-4.1$ cd ..
bash-4.1$ pwd
/var/tmp
bash-4.1$ set -o physical
bash-4.1$ cd dogs
bash-4.1$ pwd
/var/tmp/real/cats
bash-4.1$ cd ..
bash-4.1$ pwd
/var/tmp/real
bash-4.1$
Исследование /var/mail
каталога ls
должно выявить, есть ли какие-либо символические ссылки, созданные, как я предполагаю, Apple.
решение2
В macOS (я предполагаю, что это так, поскольку вы упомянули /Users
), /var/mail/username
- это mbox
отформатированный почтовый ящик для пользователя username
, а /Users/username
- это домашний каталог для того же пользователя.
На обычной, немодифицированной установке macOS /var/mail/username
будетнетбыть символической ссылкой на домашний каталог пользователя, а также не будет /Users/username
ссылкой на /var/mail/username
.
cd ..
по умолчанию будет работать как cd -L ..
, т.е. он перенесет вас наверхлогичныйродительский каталог, а нефизическийродительский каталог ( cd -P ..
).
Из ksh
руководства по macOS:
По умолчанию имена символических ссылок обрабатываются буквально при поиске имени каталога. Это эквивалентно параметру
-L
.-P
Параметр вызывает разрешение символических ссылок при определении каталога. Последний экземпляр-L
или-P
в командной строке определяет, какой метод используется.