質問: Linuxについて勉強しています。些細な質問ですがお教えください。(1)LinuxとUnixでファイルツリーの構造が微妙に異なっているようですが、なにか理由があるのでしょうか。(2)ディレクトリの中にはディレクトリやファイルの管理情報があるらしいですが、なぜ親ディレクトリは..、自分自身を.と表現しているのでしょうか。確かに相対パスで指定するとき、少しラクですが、それ以上の理由はあるのでしょうか。(3)ハードリンクはディレクトリに対して行えませんが、なぜでしょうか。確かにls -Rなどとすると、循環して永遠に表示が終わらない可能性がありそうですが...。(4)「/」が、ルートディレクトリを表す一方で、区切りの記号としても使われています。個人的には気持ちが悪いのですが、なにか理由があるのでしょうか。とくにルートディレクトリとその子ディレクトリの表現が気持ち悪いです。たとえば「//home/...」ならばまだ納得できるんですけれど。
回答: 基本的に他の方が答えていますので(1)について補足しておきます。 ファイルシステムの構成は昔はUnix全般で結構色々ありました。 これは歴史的な理由になります。 ここの説明は省略します。それこそUnixの歴史を最初から追わなくてはいけないので...。 そして現在このままでは問題があるということで標準化を行っています。 (コメントでttamoさんが指摘していますが)これがFHS(The Filesystem Hierarchy Standard)という規格です。 がFHSのサイトです。 現在のLinux(おそらくはUnix全般も)はFHSに従っているはずです(100%ではないですが)。 ただし、FHSにもバージョンがありまして、各ディストリビュータがリリースを行うときにFHSのどのバージョンに従うかによってディレクトリ構成が変わってきます。 Linux間でも(もちろんUnix間でも)ディレクトリ構成が異なるのはこういう事情です。 もちろんFHSに従っていない場合もありますのでその辺は仕方が無い部分もあります。 ちなみにLinuxであればmanのhier(7)を参照すれば各ディレクトリの意味が書いています。 >>ttamoさん >ありがとうございます。(2)について、ちょっと意味がわかりません(笑)。ただ、「すべてをファイルで表現する」という思想があるのですね。参考になりました。 この「すべてをファイルで表現する」というのはまさにUnixの哲学の1つです。 この辺(というか今回の質問全般)を本当に理解するにはC言語でプログラミングを行うしかないと思います。