なぜ /var/mail/{username} = /Users/{username} なのでしょうか?

なぜ /var/mail/{username} = /Users/{username} なのでしょうか?

私の基本的な質問は、なぜこれらのパスの両方がホーム (つまり、~) を指しているのでしょうか? 同じホームを指しているのでしょうか、それとも重複しているのでしょうか?

重複しているとは思えません。そうでない場合、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であり、は同じユーザーのホーム ディレクトリです。mboxusername/Users/username

通常の、変更されていないmacOSのインストールでは/var/mail/usernameないユーザーのホームディレクトリへのシンボリックリンクにも、/Users/usernameへのリンクにもなりません/var/mail/username


cd ..デフォルトでは のように動作しますcd -L ..。つまり、論理的な親ディレクトリではなく物理的な親ディレクトリ(cd -P ..)。

kshmacOS のマニュアルより:

デフォルトでは、ディレクトリ名を検索するときに、シンボリック リンク名は文字通りに扱われます。これは、 オプションと同等です-L。 このオプションにより、ディレクトリを決定するときにシンボリック リンクが解決されます。コマンド ラインのまたはの-P最後のインスタンスによって、どの方法が使用されるかが決まります。-L-P

関連情報