setoptとzstyleの他の用途は何ですか?

setoptとzstyleの他の用途は何ですか?

zstyleどちらも同じことをしたり、setoptそれ以上のことをするように見えるので、なぜ両方が必要なのか理解できません。

ベストアンサー1

setoptシェルオプションの設定

住宅オプションシェル自体の動作を変更するブール変数です。setoptオンまたはオフにします。引数なしで実行して、setoptどのシェルオプションがデフォルトから切り替えられたかを確認できます。これらの一部は実行時に変更できません。代わりに、その目的はシェルの内部状態に関する情報を提供することです。

使用可能なシェルオプションはシェルによって決まり、自分で作成することはできません。ただし、すべてのシェルコードは、シェルオプションの値を読み取り、それに応じて独自の動作を変更するように決定できます。さらに、シェル関数または実行可能なシェルスクリプト(sourcedを除く)は、周囲のシェルの残りの部分に影響を与えることなく、ローカルにシェルオプションを変更できます。

zstyle名前空間属性の提供

zstyle [<flag>] ( <namespace> | <selector> ) <property> <value>Zsh グローバル変数を置き換えます。それはシェルを受け入れますパスワード(シェル自体ではなく)ユーザーが設定を構成し、自分の内部状態を保存する方法を提供します。いいえ実際のグローバル変数でシェルを汚染します。

シェルオプションとは異なり、プロパティzstyleはローカルで変更できません。代わりに、zstyle名前空間とセレクタシステムを使用してください。属性を読み取るときにzstyle読み取る属性の名前と名前空間を渡します。しかしいつ環境zstyleあなたが渡す属性グローバルモードこれはCSSセレクタのように機能し、複数の名前空間に対して同じプロパティを同時に設定できます。 (CSSとのこの類似性のため、ここでは「スタイル」という言葉を使用したようです。)

名前空間にどの構文を使用するかはzstyle重要ではありません。レイヤー区切り文字として使用されます:(Zshで実行)完全なシステム)は単に合意にすぎません。

zstyleプロパティは文字列配列を格納します。しかし:

  • プロパティの設定時にこのフラグが渡されると、プロパティを読み取る-eと文字列がコードとして評価され、次のようになります。計算された属性- グローバル変数では不可能です。

  • zstyle複数提供値を取得してテストする便利な方法、これらの文字列配列を他の型に簡単に変換できます。

おすすめ記事