シェルスクリプト - 予期しない表示「[」の近くに構文エラーがあります。

シェルスクリプト - 予期しない表示「[」の近くに構文エラーがあります。

端末を開くと、次のエラーが発生します。

bash: /home/ai/.bashrc: line 75: syntax error near unexpected token `['
bash: /home/ai/.bashrc: line 75: `if [ -x /usr/bin/dircolors ]; then'

コメントで始まるbashrcファイルスクリプトの関連部分は次のとおりです。

# enable color support of ls and also add handy aliases

if [ -x /usr/bin/dircolors ]; then

    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'

fi

私は何が間違っていて、どのように解決できますか?

答え1

Pastebinリンクを見ると、問題のあるブロックの前にesac終わるステートメントがありません。case

答え2

このコードブロックの前にエラーが発生した可能性が高いです。たとえば、このコードを独自のスクリプトに入れて、次のようechoにエイリアスを指定すると、次のようになります。

#!/bin/bash

# example.bash
if [ -x /usr/bin/dircolors ]; then

    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    echo "alias ls='ls --color=auto'"
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    echo "alias grep='grep --color=auto'"
    echo "alias fgrep='fgrep --color=auto'"
    echo "alias egrep='egrep --color=auto'"

fi

わかりました:

$ ./example.bash 
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'

これはそれが良いことを示しています。

ケースブロック終了

このブロックには対応項目はありませんesac

case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)

....

関連情報