zsh: Bir seçeneğin etkin olup olmadığı nasıl kontrol edilir?


39

Bir seçeneği etkinleştirmek için kullanabiliriz setopt. Örneğin:

setopt extended_glob

Bir seçeneğin etkin olup olmadığını nasıl kontrol edebiliriz?

Yanıtlar:


41

Seçeneğinde zsh, setoptetkin seçenekleri göstermek ve unsetopthangilerinin etkin olmadığını göstermek için kullanabilirsiniz :

$ setopt
autocd
histignorealldups
interactive
monitor
sharehistory
shinstdin
zle

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

İçinde bashkullanabilirsiniz shopt -p.


setoptYalnızca, bu öykünme modu için varsayılan olarak etkin olmayan seçenekleri yazdırdığına dikkat edilmelidir .
llua,

6
set -oTAM liste için kullanmalısınız .
Kutsan Kaplan

16

Sadece kullan:

[[ -o extended_glob ]]

Bu da işe yarar bash, ancak yalnızca ayarlanan seçenekler için set -odeğil, ayarlananlar için de geçerlidir shopt. veya zshile ayarlanabilecek tek bir seçenek kümesi vardır .setoptset -o

Tıpkı bash(veya herhangi bir POSIX kabuğunda olduğu gibi ) geçerli seçenek ayarlarını set -oda set +ogörebilir veya görebilirsiniz.


11

zsh/parameterVarsayılan dağıtımının bir parçası olan modül, bir ilişkisel dizi sağlar optionsseçenekler üzerinde olduğu gösterilmektedir.

if [[ $options[extended_glob] = on ]]; then 

Tek harfli takma adı olan seçenekler için (durum böyle değildir extended_glob), ayrıca denetleyebilirsiniz $-.

Hangi seçeneklerin etkin olduğunu test etmenin nadiren yararlı olduğunu unutmayın. Bir kod parçasındaki bir seçeneği etkinleştirmeniz veya devre dışı bırakmanız gerekirse, bu kodu bir fonksiyona koyun ve local_optionsseçeneği ayarlayın . emulateSeçenekleri varsayılan duruma sıfırlamak için yerleşik kodu çağırabilirsiniz .

my_function () {
  setopt extended_glob local_options
}
another_function () {
  emulate -L zsh
  setopt extended_glob
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.