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


39

オプションを有効にするには、を使用できますsetopt。例えば:

setopt extended_glob

オプションが現在有効になっているかどうかを確認するにはどうすればよいですか?

回答:


41

ではzshsetopt有効なオプションを表示したり、有効にunsetoptなっていないオプションを表示したりできます。

$ setopt
autocd
histignorealldups
interactive
monitor
sharehistory
shinstdin
zle

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

ではbash、を使用できますshopt -p


setoptそのエミュレーションモードでデフォルトで有効になっていないオプションのみを印刷することに注意してください。
llua 14年

6
set -oリストに使用する必要があります。
カプラン

16

ただ使用する:

[[ -o extended_glob ]]

これもで動作しbashますが、で設定されたオプションに対してのみ有効で、で設定されたオプションset -oでは機能しませんshopt。またはzshで設定できるオプションのセットは1つのみです。setoptset -o

ちょうどと同じようにbash(または任意のPOSIXシェル)、あなたも行うことができますset -oまたはset +o現在のオプション設定を参照してください。


11

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
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.