Odpowiedzi:
Za zshpomocą możesz setoptwyświetlić opcje włączone i unsetoptpokazać, które nie są włączone:
$ setopt
autocd
histignorealldups
interactive
monitor
sharehistory
shinstdin
zle
$ unsetopt
noaliases
allexport
noalwayslastprompt
alwaystoend
noappendhistory
autocd
autocontinue
noautolist
noautomenu
autonamedirs
.....
W bash, możesz użyć shopt -p.
set -odla PEŁNEJ listy.
Po prostu użyj:
[[ -o extended_glob ]]
Działa to również bash, ale tylko dla opcji ustawionych przez set -o, a nie dla opcji ustawionych przez shopt. zshma tylko jeden zestaw opcji, które mogą być ustawiane albo setoptalbo set -o.
Podobnie jak w przypadku bash(lub dowolnej powłoki POSIX), możesz także zrobić set -olub set +ozobaczyć bieżące ustawienia opcji.
zsh/parameterModuł, który jest częścią dystrybucji domyślnym zapewnia tablicę asocjacyjną options, która wskazuje, które opcje są włączone.
if [[ $options[extended_glob] = on ]]; then …
W przypadku opcji, które mają alias jednoliterowy (co nie ma miejsca extended_glob), możesz również sprawdzić $-.
Pamiętaj, że rzadko przydatne jest sprawdzenie, które opcje są włączone. Jeśli chcesz włączyć lub wyłączyć opcję w kodzie, umieść ten kod w funkcji i ustaw local_optionsopcję. Możesz wywołać emulatewbudowane, aby zresetować opcje do stanu domyślnego.
my_function () {
setopt extended_glob local_options
}
another_function () {
emulate -L zsh
setopt extended_glob
}
setoptdrukuje tylko opcje domyślnie wyłączone w tym trybie emulacji.