Ответы:
В 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
печатаются только параметры, не включенные по умолчанию для этого режима эмуляции.