新しい仮想端末を実行するたびに次に終了します。
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
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'
シェル構造を維持する限り、一部のデバイスエイリアスを定義できますが)。