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

옵션을 활성화하기 위해을 사용할 수 있습니다 setopt. 예 :

setopt extended_glob

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



답변

에서 활성화 된 옵션 을 표시하고 활성화되지 않은 옵션을 표시 zsh할 수 있습니다 .setoptunsetopt

$ setopt
autocd
histignorealldups
interactive
monitor
sharehistory
shinstdin
zle

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

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


답변

그냥 사용하십시오 :

[[ -o extended_glob ]]

또한에서 작동 bash하지만 에서 설정 한 옵션이 set -o아닌에 의해 설정된 옵션에 대해서만 작동 합니다 shopt. 또는 zsh로 설정할 수있는 옵션 세트가 하나만 있습니다 .setoptset -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
}


답변