새로운 가상 터미널을 실행할 때마다 다음으로 끝납니다.
bash: /usr/share/bash-completion/bash_completion: line 226: syntax error near unexpected token `}'
bash: /usr/share/bash-completion/bash_completion: line 226: `}'
kimifish@kimipc:~$
하지만 파일은 bash_completion
괜찮은 것 같습니다(물론 그렇지 않습니다).수직 막대가 있어서 죄송합니다. 이것은 단지 vim 탭 강조 표시일 뿐입니다.:
...
186 # Assign variables one scope above the caller
187 # Usage: local varname [varname ...] &&
188 # _upvars [-v varname value] | [-aN varname [value ...]] ...
189 # Available OPTIONS:
190 # -aN Assign next N values to varname as array
191 # -v Assign single value to varname
192 # Return: 1 if error occurs
193 # See: http://fvue.nl/wiki/Bash:_Passing_variables_by_reference
194 _upvars()
195 {
196 if ! (( $# )); then
197 | echo "${FUNCNAME[0]}: usage: ${FUNCNAME[0]} [-v varname"\
198 | | "value] | [-aN varname [value ...]] ..." 1>&2
199 | return 2
200 fi
201 while (( $# )); do
202 | case $1 in
203 -a*)
204 | | | # Error checking
205 | | | [[ ${1#-a} ]] || { echo "bash: ${FUNCNAME[0]}: \`$1': missing"\
206 | | | | "number specifier" 1>&2; return 1; }
207 | | | printf %d "${1#-a}" &> /dev/null || { echo "bash:"\
208 | | | | "${FUNCNAME[0]}: \`$1': invalid number specifier" 1>&2
209 | | | | return 1; }
210 | | | # Assign array of -aN elements
211 | | | [[ "$2" ]] && unset -v "$2" && eval $2=\(\"\${@:3:${1#-a}}\"\) &&
212 | | | shift $((${1#-a} + 2)) || { echo "bash: ${FUNCNAME[0]}:"\
213 | | | | "\`$1${2+ }$2': missing argument(s)" 1>&2; return 1; }
214 | | | ;;
215 -v)
216 | | | # Assign single value
217 | | | [[ "$2" ]] && unset -v "$2" && eval $2=\"\$3\" &&
218 | | | shift 3 || { echo "bash: ${FUNCNAME[0]}: $1: missing"\
219 | | | "argument(s)" 1>&2; return 1; }
220 | | | ;;
221 *)
222 | | | echo "bash: ${FUNCNAME[0]}: $1: invalid option" 1>&2
223 | | | return 1 ;;
224 esac
225 done
226 }
...
오류를 어디서 찾아야 할지 전혀 모르겠습니다...
~/.bashrc
bash 완성에 관한 나의 부분:
91 if ! shopt -oq posix ; then
92 if [ -f /usr/share/bash-completion/bash_completion ]; then
93 . /usr/share/bash-completion/bash_completion
94 elif [ -f /etc/bash_completion ]; then
95 . /etc/bash_completion
96 fi
97 fi
섹션별로 코드를 제거하면 몇 가지 정보가 드러났습니다. " while
" 루프를 자르면 오류가 제거되었지만 " case
" 구조만 자르면 오류가 제거되지 않았습니다. =/
답변1
한 가지 가능한 설명은 다음과 같습니다.
alias done='something'
구매하기 전에 /usr/share/bash-completion/bash_completion
.
이것은 오류 메시지를 설명합니다. bash
함수가 닫혔다고 불평하지만 while
루프는 아직 닫히지 않았습니다( done
대체 부족으로 인해 something
).
done
또는 쉘 키워드를 별칭으로 사용하지 마십시오 ( alias do='do ((loop_level++));'; alias done='((loop_level--)); done'
쉘 구조를 유지하는 한 일부 기기 별칭을 정의할 수는 있지만).