Ответы:
В 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.
set -oдля полного списка.
Просто используйте:
[[ -o extended_glob ]]
Это также работает bash, но только для опций, установленных set -o, а не тех, которые установлены shopt. zshимеет только один набор опций , которые могут быть установлены либо setoptили set -o.
Как и с bash(или любой оболочкой POSIX), вы также можете сделать set -oили set +oпросмотреть текущие настройки параметров.
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
}
setoptпечатаются только параметры, не включенные по умолчанию для этого режима эмуляции.