展開固有のパスの標準環境変数

展開固有のパスの標準環境変数

私が見るには、異なるLinux / Unixディストリビューション間で異なるファイルシステムがどのように構築されるのかについて多くの混乱があるようです(または少なくとも私が見るのはそうです)。

システムごとに異なるタイプのパッケージを使用するよりも、各ファイルシステム構造内で異なるディレクトリを指す環境変数を持つ方が便利です。

例:Windowsシステムで「Program Files」ディレクトリの場所を知りたい場合は、環境変数を使用できます%ProgramFiles%%ProgramFiles(x86)%LinuxまたはUnixシステムに対応するツールはありますか?

答え1

%ProgramFiles%LinuxにはWindowsが必要ないため、Windowsと同等のものはありません。独自のディレクトリにインストールされたプログラムの標準的な場所は/opt。ほとんどのプログラムはパッケージ内にあり、ファイルが他のプログラムで見つけることができる場所にあるため、ここにはインストールされません。 Windowsに変数がある理由は、%ProgramFiles%実際にはほとんど歴史的です。

  • Windowsにはドライブ文字があります。標準的な立場としても依然としてそうなのかなど\Program Filesに対する疑問が残る。c:\Program FilesLinuxではD:\Program Filesこの問題は発生しません。シンボリックリンクディレクトリが存在する物理記憶媒体に関係なく、どこにでも表示できます。 (最新のWindowsには同じ機能があるため、これは必要ありませんが、以前のバージョンとの互換性のために場所を変更できます。)
  • Windowsでは、管理者はシステムディレクトリの名前を選択できます。 Linuxは以前に一度も行われたことがないので大丈夫です。一方、Windowsは以前のバージョンとの互換性のために別の場所を選択する管理者を受け入れる必要があります。
  • 各Windowsプログラムには独自のインストーラが用意されているため、実際のパッケージ管理メカニズムがなく、どのファイルがどのパッケージに属しているかを追跡する唯一の方法は、各ディレクトリにパッケージを持つことです。変化が始まっていますが、完全ではありません。それと比較して、Linuxは通常ファイルが見つかる場所に保存そして、パッケージマネージャにそのパッケージが誰に属しているかを追跡するように指示します。

PATHLinuxには、実行可能なコマンド、LD_LIBRARY_PATH共有ライブラリ、MANPATHマニュアルページなどのパスを指定する環境変数があります。彼らは皆どこにいるのかについて探すファイル、どこに行けませんか?置く文書。ファイルがどこに保存されているかは問題ではありませんプログラムご存知のように、それは重要なことです。パッケージマネージャわかります。パッケージマネージャにはデータファイルがあるため、アイテムの場所を知らせる環境変数は必要ありません。

Linuxシステムのディレクトリ構造は、次のように標準化されています。ファイルシステム階層標準。ほとんどの場合、場所が標準であるか、単一の場所が必要ないため、環境変数は必要ありません。

ディストリビューションによってパッケージシステムが異なることは、ディレクトリ構造が異なるためではありません。これがディストリビューション間の主な違いの1つです。

答え2

私が正しく理解したら、Ubuntu、Debian、redhat / centosなどのさまざまなディストリビューションで、さまざまなプログラムの名前とパスが同じであることを意味します。

WebサーバーApacheを例として使用します。一部のディストリビューションではこれを apache2 としてインストールし、設定ファイル名を apache2.conf と指定しますが、他のディストリビューションではこれを httpd としてインストールし、設定ファイル名を httpd.conf と指定し、これらのファイルへのパスはディストリビューションによって異なります。違いもあります。

puppetは、さまざまなディストリビューションで一貫した構成管理を可能にするプロジェクトの1つです(https://puppetlabs.com/)、もう1つはChef他の多数です。

これらの構成管理システムは、システム管理者からファイルシステム階層、パス名、または他のパッケージ名の違いを隠します。

答え3

私の形式:

これファイルシステム階層標準(FHS)は説明です条約UNIXシステム用のレイアウト。 」

これは単なる習慣に過ぎず、Linuxが単一の会社で作られているわけではないので、個々の*nix開発者はレガシーコード、好みなどの現実的な問題のために必然的に標準から外れます。ミックスに変数を追加すると、デプロイメント作成者は依然として誰にも責任を負わず、シェルの外側の項目が機能するときに「変数」が非常にあいまいな概念になるため、問題を単純化するのではなく複雑にするだけです。

関連情報