zsh: 옵션이 활성화되어 있는지 확인하는 방법

zsh: 옵션이 활성화되어 있는지 확인하는 방법

옵션을 활성화하려면 를 사용할 수 있습니다 setopt. 예:

setopt extended_glob

옵션이 현재 활성화되어 있는지 어떻게 확인할 수 있나요?

답변1

에서는 를 사용하여 활성화된 옵션과 활성화되지 않은 옵션을 표시할 zsh수 있습니다 .setoptunsetopt

$ setopt
autocd
histignorealldups
interactive
monitor
sharehistory
shinstdin
zle

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

에서는 bash를 사용할 수 있습니다 shopt -p.

답변2

그냥 사용:

if [[ -o extended_glob ]]; then
  echo it is set
fi

이는 에서도 작동 하지만 에서 설정한 옵션이 아닌 에서 설정한 bash옵션에만 적용됩니다 . 또는 으로 설정할 수 있는 옵션 세트는 하나만 있습니다 .set -oshoptzshsetoptset -o

(또는 다른 POSIX 셸) 과 마찬가지로 현재 옵션 설정을 보거나 볼 수도 bash있습니다 .set -oset +o

답변3

그만큼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
}

답변4

() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>"  } <optname>

에서<optname>https://zsh.sourceforge.io/Doc/Release/Options.html

예:

() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>"  } LOCAL_TRAPS

option <LOCAL_TRAPS> is off

() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>"  } localtraps
option <localtraps> is off

() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>"  } localtrap 
no such option <localtrap>

관련 정보