bash 配置语法错误

bash config syntax error

我正在 Bluehost 上设置一个全新的 VPS。我一登录,就知道出事了。当我启动 bash shell 时出现此错误:

bash: eval: line 9: syntax error: unexpected end of file

我将问题追踪到 /etc/profile.d/locallib.sh 中的 eval $(perl -Mlocal::lib) 行:

#cPanel Added local::lib -- BEGIN
LOCALLIBUSER=$USER
if [ -e "/usr/bin/whoami" ]; then
    LOCALLIBUSER=`/usr/bin/whoami`
fi
if [ "$LOCALLIBUSER" != "root" ]; then
    eval $(perl -Mlocal::lib)
fi
#cPanel Added local::lib -- END

当我在 bash 提示符下执行 eval $(perl -Mlocal::lib) 时,出现错误 bash: syntax error: unexpected end of file。当我在 bash 提示符下执行 perl -Mlocal::lib 时,我得到这个:

if ! $?PERL_MB_OPT setenv PERL_MB_OPT '';
setenv PERL_MB_OPT "--install_base "\""/home/MYUSERNAME/perl5"\""";
if ! $?PERL_MM_OPT setenv PERL_MM_OPT '';
setenv PERL_MM_OPT "INSTALL_BASE=/home/MYUSERNAME/perl5";

为什么会出现此错误?我该如何纠正它?我对 bash 比较陌生,对 perl 完全没有希望,所以我的立场不稳。谢谢!

出于某种原因,local::lib 中的代码将您的 shell 错误识别为 csh。你可以根据 documentation.

--shelltype bourne 强制它
eval $(perl -Mlocal::lib=--shelltype,bourne)

我推测您的帐户可能已将 tcsh 设置为默认值 shell。您可以使用 chsh 永久更改此设置,在这种情况下,希望不需要此解决方法。