Unixパラダイムの1つが設定ファイルに設定名(プロパティ名とも呼ばれます)と設定値の両方を格納するのはなぜですか?
もう1つのアプローチは、KISS(Keep It Simple and Stupid)原則に従って、ファイル名に属性名を保存し、ファイル内に設定値のみを保存することです。プロファイルはまだフォルダを使用してソートできます。私が知る限り、同様のものはすでにLinuxの/ proc内のいくつかのファイルに実装されていますが、他の場所では見たことがありません。
私が知る限り、Unixの哲学は「すべてがファイルです」ということです。なぜここではない?
答え1
構成ファイルがオプションで次の形式に分類されない理由についてのいくつかの考え方は次のとおりです。
config
default
key
key
...
key
other
key
key
...
最初のサブディレクトリは構成タイプであり、その中の各ファイル(ここで「キー」)はそれぞれファイルの内容である値を持つ別々の構成オプションです。もちろん、多くの例外を除いて、これらすべては私がこれまで学んだことです。
通常、ほとんどのUNIX / Linuxユーティリティは一度に1つのファイルで動作します。一行ずつ、複数のファイルの代わりに。なぜ?いくつかの理由がありますが、これが入力を処理する最も簡単な方法のようです。プログラミングインターフェイスで見ると、ほとんどのファイルは一連の行です。行(一部のテキストの後に
\n
ASCII改行文字が付く)は、実際にはファイルではなく、ほとんどのアプリケーションで最も基本的なデータ単位です。横に:端末は、ユーザーが作業するときに紙に1行ずつ印刷するように設計されています。正直なところ、tty
それでもシリアルインターフェースと見なされるので、現代にはあまり変わりません。ソケットサーバーやその他のデーモンなどの複雑なプログラムの構成オプションが非常に多い状況を考えてみましょう。デフォルト値を取得するために何百ものファイルを開く必要がある潜在的に派生したプログラムには、開かれたファイル記述子の制限(簡単にバイパス)とファイルごとにいくつかのシステムコールという2つの罰があります。プログラムがカーネルにファイルの読み取りと開くの助けを求める必要があるため、システムコールが蓄積される可能性があります。
ed
既存のエディタ(明らかに勝者です:D)sed
またはawk
。多数のファイルベースの設定オプションで既存の編集ツールを使用することは本当に不便です。さらに、多数のオプションを検索することは、編集者にとって実際にできることではなく、ユーザーシェルの練習になります。ほとんどの設定オプションが単純な値である場合、echo
一部のシェルIOリダイレクトはエディタの選択になります(ユーザーの好みを知っていれば悪くないかもしれません)。コメント。構成ファイルには、オプションよりも多くの説明が含まれている場合があります。本物コメントのように。設定ファイルを設定ディレクトリに置き換えて、突然そこに不快な行ベースのファイルがある場合、人々はreadmeファイルを作成することに慣れることをお勧めします。
全体として、ファイルベースの構成はUNIX / Linuxシステムの中核であると言いたいと思います。違うことができますか?確かに。現在のパラダイムが最善のアプローチですか? UNIX / Linuxシステムでは機能できますが、ディレクトリ代替ファイルが入力インターフェースポイントである他の環境では機能しません。
答え2
広く使用されているテキストエディタVimを考えてみましょう。 Vimには360以上のオプションがあります。追加する他の多くの機能はさまざまな方法で設定できます。 Vimが起動すると、システム全体の初期化ファイル、1つまたは2つのユーザー固有の初期化ファイル、および構文の強調表示、メニューなどを設定するいくつかの初期化ファイルなど、いくつかの初期化ファイルが読み込まれます。提案された設定に応じて、Vimは360を超えるシステム全体のオプション設定ファイルを見つけて(つまり、開こうとし)、360のユーザー固有のオプション設定ファイルを見つける必要があります。まだVimはスクリプト可能で、最も興味深い機能はスクリプト言語を使用して設定されているため、一般的な設定ファイルを読む必要があります。テキストエディタを実行するために何百ものファイルを開こうとするのはかなり非効率的です。
今、本当の質問が出てきます。一部のオプションは、他のオプションによって異なる値に設定できます。一般的な設定ファイルではこれは簡単です。正しい順序で設定したことを確認してください。たとえば、提案された設定では、「バックスペース」の前に「互換性」オプションが設定されていることを確認する方法はありません。一般設定ファイルでは、ユーザーはスクリプト言語を使用して特定のオプションの値をオペレーティング環境に合わせて調整できます。
あなたが説明するのは実際にはWindowsレジストリです。レジストリが小さなファイルの束ではなく、ある種のデータベースとして保存される理由があります。