.bashrc 구문 오류: 예기치 않은 파일 끝

.bashrc 구문 오류: 예기치 않은 파일 끝

터미널을 실행할 때마다 ".bashrc 구문 오류: 예기치 않은 파일 끝"이라는 오류 메시지가 나타납니다.

그래서 나는 문제를 이해하기 위해 그것의 일부를 언급하기 시작했습니다. 아마도 아래의 if 조건에 있는 것 같습니다. 작동하도록 편집하는 방법을 알고 싶습니다.

if ("1" == "$?LD_LIBRARY_PATH") then
        if ("$LD_LIBRARY_PATH" !~ */usr/local/iscir/lib*) then
                export LD_LIBRARY_PATH /usr/local/iscir/lib:$LD_LIBRARY_PATH
        endif
else
        export LD_LIBRARY_PATH /usr/local/iscir/lib
endif

나는 이것을 시도했지만 성공하지 못했습니다.

if ["1" == "$?LD_LIBRARY_PATH"]; then
        if ["$LD_LIBRARY_PATH" !~ */usr/local/iscir/lib*]; then
                export LD_LIBRARY_PATH /usr/local/iscir/lib:$LD_LIBRARY_PATH
        fi
else
        export LD_LIBRARY_PATH /usr/local/iscir/lib
fi

답변1

endif배쉬에는 없습니다. 진술은 if으로 끝납니다 fi. 또한 [ ]테스트 구성을 사용할 때 [정규식 일치 연산자에는 POSIX 대신 =~bash의 특수 기호가 필요하며 일치를 무효화하려면 사용할 수 없는 전체 테스트( )를 무효화 해야 합니다. , 쉘 글로브 대신. 따라서 그 자체로는 의미가 없으며 "모든 문자"가 필요합니다. 그러면 변수를 설정하고 내보내는 형식은 , 이고, 와 사이에 가짜가 있습니다 . 그러니 이것을 시도해 보세요:[[ ]][ ][[ ! foo ~ bar ]]!~*.*export foo=bar?$LD_LIBRARY_PATH

if [ "1" == "$LD_LIBRARY_PATH" ]; then
    if [[ ! "$LD_LIBRARY_PATH" =~ .*/usr/local/iscir/lib.* ]]; then
        export LD_LIBRARY_PATH="/usr/local/iscir/lib:$LD_LIBRARY_PATH"
    fi
else
    export LD_LIBRARY_PATH="/usr/local/iscir/lib"
fi

이것은 작동해야 하지만 모든 것이 이해가 되지 않습니다. 언제 LD_LIBRARY_PATH일까요 1? 나는 이것이 어떻게 수행되는지 정말로 이해하지 못합니다. 아직 존재하지 않는 /usr/local/iscir/lib경우 추가하고 싶다면 다음을 수행하면 됩니다.LD_LIBRARY_PATH

if [ -z "$LD_LIBRARY_PATH" ]; then
    export LD_LIBRARY_PATH="/usr/local/iscir/lib"
elif [[ ! "$LD_LIBRARY_PATH" == */usr/local/iscir/lib* ]]; then
    export LD_LIBRARY_PATH="/usr/local/iscir/lib:$LD_LIBRARY_PATH"
fi

답변2

편집하고 싶다면:

  • 다른 모든 명령과 마찬가지로 이 명령에도 [양쪽에 공백이 필요합니다.
  • 비교 연산자는 =~의 일부가 아닙니다 test. 필요한 것은 명령 입니다 [[.
  • =내보내기 값 설정 시 기호 누락(2회)
  • 당신의 테스트는 "1" == "$?LD_LIBRARY_PATH"항상 틀려요

경로만 확장하려는 경우(경로에 아직 확장이 포함되지 않은 경우) 다음 명령을 사용할 수 있습니다.

case "$LD_LIBRARY_PATH" in
    */usr/local/iscir/lib*);;
    *)
        export LD_LIBRARY_PATH=/usr/local/iscir/lib:"$LD_LIBRARY_PATH"
        ;;
esac

관련 정보