터미널을 열 때 이 문제가 발생하는 이유는 무엇입니까? Line 12: 마커 "fi" 근처에 예기치 않은 구문 오류가 있습니까? [폐쇄]

터미널을 열 때 이 문제가 발생하는 이유는 무엇입니까? Line 12: 마커 "fi" 근처에 예기치 않은 구문 오류가 있습니까? [폐쇄]

이 콘텐츠를 게시하기에 적합한 커뮤니티가 아니라면 사과드립니다. 제 질문에 적용되는 적절한 Stackexchange 커뮤니티에 저를 연결해 주시기 바랍니다. 이 오류에 대해 사이트를 검색했지만 기술에 정통하지 않기 때문에 무슨 일이 일어나고 있는지 이해할 수 없으므로 양해해 주셔서 감사합니다.

문제: Mac에서 터미널을 시작할 때마다 이 오류가 발생합니다.

-bash: /Users/Anthonywes/.bash_profile: line 12: syntax error near unexpected token `fi'
-bash: /Users/Anthonywes/.bash_profile: line 12: `    fi'

이것이 무엇을 의미하고 무슨 일이 일어나고 있는지 잘 모르겠습니다. 나는 bash가 무엇을 의미하는지조차 이해하지 못합니다. 무슨 일인지 나한테 설명해 줄 수 있는 사람 있나요?

이 비디오(타임스탬프: 1:09:04)에서 MySQL을 설치하려고 할 때 이 문제를 발견했습니다.https://www.youtube.com/watch?v=HXV3zeQKqGY&t=3950s&ab_channel=freeCodeCamp.org

다음과 같아야 합니다. 여기에 이미지 설명을 입력하세요.

그러나 이것은 나에게 효과적입니다.

-bash: /Users/Anthonywes/.bash_profile: line 12: syntax error near unexpected token `fi'
-bash: /Users/Anthonywes/.bash_profile: line 12: `    fi'
Anthonys-Air:~ -bash: /Users/Anthonywes$ echo 'export PATH=/usr/local/mysql/bin:$PATH' >> ~/.bash_profile
Anthonys-Air:~ -bash: /Users/Anthonywes$ . ~/.bash_profile
-bash: /Users/Anthonywes/.bash_profile: line 12: syntax error near unexpected token `fi'
-bash: /Users/Anthonywes/.bash_profile: line 12: `    fi'

다음은 .bash_profile의 내용입니다.

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/Anthonywes/opt/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/Users/Anthonywes/opt/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/Users/Anthonywes/opt/anaconda3/etc/profile.d/conda.sh"
    else
        
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

export PATH=/usr/local/mysql/bin:$PATH
export PATH=/usr/local/mysql/bin:$PATH
export PATH=/usr/local/mysql/bin:$PATH

몇 달 전에 Anaconda를 제거하려고 했더니 파일에서 한 줄을 삭제하라는 메시지가 나타났습니다. 여기서 오류가 발생합니까?

질문: 그래서 내 질문은 두 가지입니다.

  1. "fi"와 관련된 처음 두 줄의 오류는 실제로 무엇을 의미합니까? 나는 무슨 일이 일어나고 있는지에 대한 일반적인 아이디어를 얻고 싶습니다.
  2. 이 문제를 어떻게 해결하고 귀하가 작성한 내용이 이 문제를 해결하는 이유를 설명할 수 있습니까?

답변1

명령문에 빈 분기가 있으면 구문 오류가 발생합니다 if.

else
(nothing)        
fi

이로 인해 오류가 발생합니다. 삭제 빈 else분기를 삭제합니다.

if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/Users/Anthonywes/opt/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/Users/Anthonywes/opt/anaconda3/etc/profile.d/conda.sh"
    fi
fi

더 많은 정보를 원하시면 방문해주세요https://www.shellcheck.net/

관련 정보