zsh: Як перевірити, чи включена опція


39

Щоб увімкнути опцію, ми можемо використовувати setopt. наприклад:

setopt extended_glob

Як ми можемо перевірити, чи опція на даний момент увімкнена?

Відповіді:


41

В 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.


Слід зазначити, що setoptдля цього режиму емуляції друкуються лише ті параметри, які за умовчанням не включені.
llua

6
Ви повинні використовувати set -oдля ПОВНОГО списку.
Куцан Каплан

16

Просто використовуйте:

[[ -o extended_glob ]]

Це також працює bash, але тільки для параметрів, встановлених компанією set -o, а не для тих, які задає shopt. zshмає лише один набір опцій, який можна встановити з будь-яким setoptабо set -o.

Як і у випадку bash(або будь-якої оболонки POSIX), ви також можете зробити set -oабо set +oпереглянути поточні параметри опцій.


11

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
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.