Ubuntu에서 루트의 .bashrc에 있는 bash 완료 설정이 주석 처리된 이유는 무엇입니까?

Ubuntu에서 루트의 .bashrc에 있는 bash 완료 설정이 주석 처리된 이유는 무엇입니까?

저는 Ubuntu 20.04를 사용하고 있으며 루트의 .bashrc 파일에서 bash 완료 설정이 기본적으로 주석 처리되어 있음을 발견했습니다.

# 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 [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#     . /etc/bash_completion
# fi

주석 처리를 해제하면 완성이 다시 작동합니다. 기본적으로 주석이 달린 이유는 무엇입니까? 이는 보안 고려 사항과 관련이 있습니까?

답변1

그 이유는 표시되는 코드에 설명되어 있습니다. 댓글을 읽어보세요(강조):

프로그래밍 가능 완성 활성화(/etc/bash.bashrc 및 /etc/profile 소스 /etc/bash.bashrc에서 이미 활성화된 경우 이 기능을 활성화할 필요가 없습니다.).

완료는 다음 파일로 인해 Ubuntu 시스템에서 기본적으로 활성화됩니다 /etc/profile.d/bash_completion.sh.

$ cat /etc/profile.d/bash_completion.sh
# Check for interactive bash and that we haven't already been sourced.
if [ -n "${BASH_VERSION-}" -a -n "${PS1-}" -a -z "${BASH_COMPLETION_VERSINFO-}" ]; then

    # Check for recent enough version of bash.
    if [ ${BASH_VERSINFO[0]} -gt 4 ] || \
       [ ${BASH_VERSINFO[0]} -eq 4 -a ${BASH_VERSINFO[1]} -ge 1 ]; then
        [ -r "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" ] && \
            . "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion"
        if shopt -q progcomp && [ -r /usr/share/bash-completion/bash_completion ]; then
            # Source completion code.
            . /usr/share/bash-completion/bash_completion
        fi
    fi

fi

이 파일은 /etc/profile로그인 셸을 시작할 때 읽는 파일인 에서 시작됩니다.

 $ grep -A6 profile\.d /etc/profile
if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

~/.bashrc즉 , 루트 파일에서 다시 활성화할 필요가 없으며 위 파일을 통해 이미 활성화되어 있습니다. 실제로 /etc/bash_completionUbuntu의 기본값은 다음과 같기 때문에 표시되는 코드는 의미가 없습니다.

$ cat /etc/bash_completion
. /usr/share/bash-completion/bash_completion

이것이 바로 그것입니다 /etc/profile.d/bash_completion.sh.

관련 정보