Enl*_*ico 7 bash arch-linux shopt
为了避免 XY 问题场景,我将解释为什么我问这个问题。
我记得我已经shopt -s extglob在我的~/.bashrc文件中设置了,因为这样的事情@(pattern-list)确实有效。
但是,我刚刚查看了~/.bashrc该选项并没有设置。
所以我决定看看它是从哪里来的,并发现
bash --norc然后运行shopt我会看到这一行extglob off,bash --rcfile /dev/null,则shopt表明extglob on,这并不能真正帮助我找出设置了哪个文件extglob。
根据评论,PS4=' $BASH_SOURCE:$LINENO: ' bash -lixc true |& grep extglob给出
/usr/share/bash-completion/bash_completion:45: shopt -s extglob progcomp
/usr/share/bash-completion/bash_completion:45: shopt -s extglob progcomp
Run Code Online (Sandbox Code Playgroud)
在 Debian/Ubuntu 上,还有/etc/bash.bashrc,Bash 的读法与~/.bashrc. 使用它是一个编译时选项,我知道 Red Hat 通过/etc/从 per-user 中获取类似的文件来做类似的事情.bashrc。
在Debian的文件似乎在暗示--rcfile应该同时重写,以及--norc抑制读取两个:
--norc如果 shell 是交互式的,则不要读取和执行系统范围的初始化文件/etc/bash.bashrc和个人初始化文件~/.bashrc。
--rcfile file从文件而不是系统范围的初始化文件/etc/bash.bashrc和标准的个人初始化文件中 执行命令~/.bashrc
但是就像@muru 在评论中所说的那样,这似乎是错误的,--rcfile /dev/null仍然是/etc/bash.bashrc. 所以,在那里寻找shopt.