.bashrc 语法错误:文件意外结束

Tak*_*Tak -3 bash 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
Run Code Online (Sandbox Code Playgroud)

我试过这个,但没有像

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
Run Code Online (Sandbox Code Playgroud)

ter*_*don 5

endifbash 中没有。一种if说法是由一个结束fi。此外,在使用[ ]测试构造时,您需要在[. 在=~正则表达式匹配运算,需要bash的特殊[[ ]]而不是POSIX [ ],并否定了比赛,你否定整个测试([[ ! foo ~ bar ]]),则不能使用!~。此外,它需要一个正则表达式,而不是一个 shell glob。所以*它本身并不意味着什么,你需要.*“任何角色”。然后,设置和导出变量的格式是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
Run Code Online (Sandbox Code Playgroud)

这应该有效,但整件事没有意义。什么时候会LD_LIBRARY_PATH1?我真的不知道这将如何执行。如果您想要做的只是添加它/usr/local/iscir/libLD_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
Run Code Online (Sandbox Code Playgroud)