zsh:オプションが有効になっていることを確認する方法

zsh:オプションが有効になっていることを確認する方法

オプションを有効にするには、次のものを使用できますsetopt

setopt extended_glob

オプションが現在有効になっていることをどのように確認できますか?

答え1

では、有効なオプションの表示と有効になっていないオプションの表示をzsh使用できます。setoptunsetopt

$ setopt
autocd
histignorealldups
interactive
monitor
sharehistory
shinstdin
zle

$ unsetopt
noaliases
allexport
noalwayslastprompt
alwaystoend
noappendhistory
autocd
autocontinue
noautolist
noautomenu
autonamedirs
.....

bash使用できますshopt -p

答え2

ちょうど使用:

if [[ -o extended_glob ]]; then
  echo it is set
fi

これはbash設定されているオプションにのみ適用され、set -o設定されているオプションには適用されませんshopt。有効または設定できるzshオプションセットは1つだけです。setoptset -o

bash(または他のPOSIXシェル)と同様に、現在のオプション設定を実行または表示することもset -oできset +oます。

答え3

これzsh/parameterモジュールは基本的な展開の一部であり、連想配列を提供します。optionsどのオプションがオンになっているかを示します。

if [[ $options[extended_glob] = on ]]; then …

単一文字のエイリアスを持つオプションの場合(そうではありませんextended_glob)、次のことも確認できます。$-

どのオプションが有効になっているかをテストすることはほとんど役に立ちません。コードのオプションを有効または無効にする必要がある場合は、コードを関数に入れて設定してください。local_optionsオプション。電話してもいいemulateデフォルト状態にリセットオプションが組み込まれています。

my_function () {
  setopt extended_glob local_options
}
another_function () {
  emulate -L zsh
  setopt extended_glob
}

答え4

() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>"  } <optname>

<optname>フォローhttps://zsh.sourceforge.io/Doc/Release/Options.html

例:

() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>"  } LOCAL_TRAPS

option <LOCAL_TRAPS> is off

() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>"  } localtraps
option <localtraps> is off

() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>"  } localtrap 
no such option <localtrap>

関連情報