
オプションを有効にするには、 を使用しますsetopt
。例:
setopt extended_glob
オプションが現在有効になっているかどうかを確認するにはどうすればよいですか?
答え1
では、を使用して有効なオプションを表示し、 を使用して有効でないオプションを表示zsh
できます。setopt
unsetopt
$ 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 つだけあります。setopt
set -o
(または任意の POSIX シェル)と同様に、または を実行して現在のオプション設定を確認することbash
もできます。set -o
set +o
答え3
のzsh/parameter
デフォルトの配布物の一部であるモジュールは、連想配列を提供する。options
どのオプションがオンになっているかを示します。
if [[ $options[extended_glob] = on ]]; then …
1文字のエイリアスを持つオプション( の場合を除く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>