zstyle
どちらも同じことをしたり、setopt
それ以上のことをするように見えるので、なぜ両方が必要なのか理解できません。
ベストアンサー1
setopt
シェルオプションの設定
住宅オプションシェル自体の動作を変更するブール変数です。setopt
オンまたはオフにします。引数なしで実行して、setopt
どのシェルオプションがデフォルトから切り替えられたかを確認できます。これらの一部は実行時に変更できません。代わりに、その目的はシェルの内部状態に関する情報を提供することです。
使用可能なシェルオプションはシェルによって決まり、自分で作成することはできません。ただし、すべてのシェルコードは、シェルオプションの値を読み取り、それに応じて独自の動作を変更するように決定できます。さらに、シェル関数または実行可能なシェルスクリプト(source
dを除く)は、周囲のシェルの残りの部分に影響を与えることなく、ローカルにシェルオプションを変更できます。
zstyle
名前空間属性の提供
zstyle [<flag>] ( <namespace> | <selector> ) <property> <value>
Zsh グローバル変数を置き換えます。それはシェルを受け入れますパスワード(シェル自体ではなく)ユーザーが設定を構成し、自分の内部状態を保存する方法を提供します。いいえ実際のグローバル変数でシェルを汚染します。
シェルオプションとは異なり、プロパティzstyle
はローカルで変更できません。代わりに、zstyle
名前空間とセレクタシステムを使用してください。属性を読み取るときにzstyle
読み取る属性の名前と名前空間を渡します。しかしいつ環境zstyle
あなたが渡す属性グローバルモードこれはCSSセレクタのように機能し、複数の名前空間に対して同じプロパティを同時に設定できます。 (CSSとのこの類似性のため、ここでは「スタイル」という言葉を使用したようです。)
名前空間にどの構文を使用するかはzstyle
重要ではありません。レイヤー区切り文字として使用されます:
(Zshで実行)完全なシステム)は単に合意にすぎません。
各zstyle
プロパティは文字列配列を格納します。しかし:
プロパティの設定時にこのフラグが渡されると、プロパティを読み取る
-e
と文字列がコードとして評価され、次のようになります。計算された属性- グローバル変数では不可能です。zstyle
複数提供値を取得してテストする便利な方法、これらの文字列配列を他の型に簡単に変換できます。