extglob이 켜져 있는 것을 보았지만 이것이 어디에 설정되어 있는지 알고 싶습니다.
$ shopt extglob
extglob on
$
이 파일에서는 찾을 수 없습니다.
~/.bashrc
~/.bash_profile
~/.profile
/etc/bashrc
(해당 파일이 없습니다)/etc/bash.bashrc
답변1
내 14.04 VM에서 다음 위치에서 찾았습니다 /usr/share/bash-completion/bash_completion
.
ubuntu@ubuntu:~$ grep extglob /usr/share/bash-completion/bash_completion
shopt -s extglob progcomp
ubuntu@ubuntu:~$
출처 ~/.bashrc
:
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
bash -x
이는 모든 소스 시작 파일과 해당 명령을 표시하는 를 실행하여 알아낼 수 있습니다 . 를 실행 script -c "bash -x"
한 다음 exit
새 대화형 셸에서 typescript
스크립트의 파일 출력을 검사합니다.
+ . /usr/share/bash-completion/bash_completion
...
++ shopt -s extglob progcomp
' 는 +
원본 파일의 수준을 나타내므로 명령에서 한 수준 위로 보면 원본이 있음을 shopt
알 수 있습니다 /usr/share/bash-completion/bash_completion
.
답변2
/usr/share/bash-completion/bash_completion
파일 아래에 설정됩니다 .
shopt -s extglob progcomp
옵션이 설정되지 않은 경우 파일 ~/.bashrc
에는 다음이 포함됩니다 .posix
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
즉, 파일이 /usr/share/bash-completion/bash_completion
존재하면 파일의 소스가 됩니다.
해당 파일에는 set 행이 포함되어 있으므로 extglob
대화형 비로그인 셸을 언급할 때 설정됩니다.