![현재 bash 세션에서 extglob이 활성화되어 있는지 어떻게 알 수 있나요?](https://linux55.com/image/81330/%ED%98%84%EC%9E%AC%20bash%20%EC%84%B8%EC%85%98%EC%97%90%EC%84%9C%20extglob%EC%9D%B4%20%ED%99%9C%EC%84%B1%ED%99%94%EB%90%98%EC%96%B4%20%EC%9E%88%EB%8A%94%EC%A7%80%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%95%8C%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
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 extglob
shopt -p extglob
이와 같은 옵션이 해당 목록 nounset
에 속합니다 . set
해당 값은
또는 를 사용하여 인쇄할 수 있습니다.shopt -op nounset
shopt -o nounset
옵션을 확인하세요.
shopt의 특정 옵션을 변경하지 않고 인쇄하려면 다음을 사용하십시오 shopt -p name
.
$ shopt -p xpg_echo
shopt -u xpg_echo
의 경우 다음 set
을 사용하세요. ( 예, 목록을 shopt -po name
사용할 수 있습니다 .)shopt -op
set
$ shopt -po xtrace
set +o xtrace
옵션을 나열합니다.
shopt의 모든 옵션을 나열하려면 사용 shopt
(또는 재사용 shopt -p
)하세요.
도 shopt -s
가능 shopt -u
.
모든 옵션을 나열하는 방법은 (관련 : ) set
을 사용하는 것입니다 . 또는: 같음 및 같음 .set -o
set +o
shopt -o
set -o
shopt -op
set +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