쉘 스크립트 - 예상치 못한 표시 '[' 근처에 구문 오류가 있습니다.

쉘 스크립트 - 예상치 못한 표시 '[' 근처에 구문 오류가 있습니다.

터미널을 열면 다음 오류가 발생합니다.

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"
    ;;
*)

....

관련 정보