현재 bash 세션에서 extglob이 활성화되어 있는지 어떻게 알 수 있나요?

현재 bash 세션에서 extglob이 활성화되어 있는지 어떻게 알 수 있나요?

bash 터미널을 열었습니다. extglob 옵션의 값을 변경하기 전에 이 세션에 대해 해당 옵션이 활성화되었는지 또는 비활성화되었는지 확인하고 싶습니다. 어떻게 해야 하나요?

답변1

빨리 달려:

$ shopt extglob

현재 상태가 반환됩니다.

$ shopt extglob 
extglob         on
$ shopt -u extglob 
$ shopt extglob 
extglob         off

모든 옵션을 표시하려면 다음을 실행하세요.

$ shopt

답변2

사용쇼핑-Q:

shopt -q extglob && echo enable || echo disable

-q옵션은 출력을 삭제 shopt하고 옵션이 설정되었는지 여부를 나타내는 상태를 반환합니다.

shopt변수에 나타날 수 있는 옵션만 보고되며 이러한 옵션은 BASHOPTS내장 명령에 영향을 미치지 않습니다.set

set에 유효하거나 에 나타날 수 있는 옵션을 확인하려면 SHELLOPTS다음을 사용하십시오 shopt -qo.

$ bash --posix -c 'shopt -qo posix && echo enable || echo disable'
enable

답변3

Bash에는 두 가지 옵션 목록이 있습니다. 에 하나 shopt, 에 하나 set.

이 옵션은 목록 extglob에 속합니다 . 해당 값은 shopt또는 를 사용하여 인쇄할 수 있습니다 .
shopt extglobshopt -p extglob

이와 같은 옵션이 해당 목록 nounset에 속합니다 . set해당 값은
또는 를 사용하여 인쇄할 수 있습니다.shopt -op nounsetshopt -o nounset

옵션을 확인하세요.

shopt의 특정 옵션을 변경하지 않고 인쇄하려면 다음을 사용하십시오 shopt -p name.

$ shopt -p xpg_echo
shopt -u xpg_echo

의 경우 다음 set을 사용하세요. ( 예, 목록을 shopt -po name사용할 수 있습니다 .)shopt -opset

$  shopt -po xtrace
set +o xtrace

옵션을 나열합니다.

shopt의 모든 옵션을 나열하려면 사용 shopt(또는 재사용 shopt -p)하세요.
shopt -s가능 shopt -u.

모든 옵션을 나열하는 방법은 (관련 : ) set을 사용하는 것입니다 . 또는: 같음 및 같음 .set -oset +o
shopt -oset -oshopt -opset +o

수동

에서 LESS=+/'^ *shopt \[' man bash:

옵션이 없거나 -p 옵션을 사용하면 설정 가능한 모든 옵션 목록이 표시됩니다. optname 인수 없이 -s 또는 -u를 사용하면 표시는 각각 설정되거나 설정 해제된 옵션으로 제한됩니다.

에서 LESS=+/'^ *set \[' man bash:

-o가 옵션 이름을 제공하지 않으면 현재 옵션의 값을 인쇄합니다. +o가 옵션 이름을 제공하지 않으면 현재 옵션 설정을 다시 생성하는 일련의 set 명령이 표준 출력에 나타납니다.

$ set -o
allexport       off
braceexpand     on
emacs           on
errexit         off
errtrace        off
functrace       off
hashall         on
histexpand      on
history         on
ignoreeof       off
interactive-comments    on
keyword         off
monitor         on
noclobber       off
noexec          off
noglob          off
nolog           off
notify          off
nounset         off
onecmd          off
physical        off
pipefail        off
posix           off
privileged      off
verbose         off
vi              off
xtrace          off

그리고

$  shopt -sp
shopt -s checkwinsize
shopt -s cmdhist
shopt -s expand_aliases
shopt -s extglob
shopt -s extquote
shopt -s force_fignore
shopt -s histappend
shopt -s histverify
shopt -s interactive_comments
shopt -s progcomp
shopt -s promptvars
shopt -s sourcepath

shopt -op실제로 set옵션이 나열되어 있다는 점은 언급할 가치가 있습니다 .

$ shopt -op
set +o allexport
set -o braceexpand
set -o emacs
set +o errexit
set +o errtrace
set +o functrace
set -o hashall
set -o histexpand
set -o history
set +o ignoreeof
set -o interactive-comments
set +o keyword
set -o monitor
set +o noclobber
set +o noexec
set +o noglob
set +o nolog
set +o notify
set +o nounset
set +o onecmd
set +o physical
set +o pipefail
set +o posix
set +o privileged
set +o verbose
set +o vi
set +o xtrace

답변4

답변에 추가위에 주어진, set로고 의 경우

현재 플래그 세트는 $-에서 찾을 수 있습니다.

(출처: bash 도움말)

if [[ ${-%x*} != $- ]] ; then echo "Debug (xtrace) is on"; fi

관련 정보