+++ This bug was initially created as a clone of Bug #1032195 +++ Syntax error in /etc/profile.d/perl-homedir.csh ---Steps to Reproduce--- * Install perl-homedir * Create a user with csh as login shell * login with that user The file /etc/profile.d/perl-homedir.csh, contained in perl-homedir, contains a syntax error. The command "eval `perl -Mlocal::lib`" fails with "Bad : modifier in $ (/).". The processing of any login scripts stops at that error, resulting in an incomplete environment for the user. Fyi ... .... looks like this is caused by missing {}: ls3814:db2lin 8> perl -Mlocal::lib setenv PERL_LOCAL_LIB_ROOT "$PERL_LOCAL_LIB_ROOT:/db2/db2lin/perl5"; setenv PERL_MB_OPT "--install_base /db2/db2lin/perl5"; setenv PERL_MM_OPT "INSTALL_BASE=/db2/db2lin/perl5"; setenv PERL5LIB "/db2/db2lin/perl5/lib/perl5:$PERL5LIB"; setenv PATH "/db2/db2lin/perl5/bin:$PATH"; ls3814:db2lin 9> setenv PERL_LOCAL_LIB_ROOT "$PERL_LOCAL_LIB_ROOT:/db2/db2lin/perl5"; Bad : modifier in $ (/). ls3814:db2lin 10> setenv PERL_LOCAL_LIB_ROOT "${PERL_LOCAL_LIB_ROOT}:/db2/db2lin/perl5" ; # no error [...] --- Additional comment from Petr Pisar on 2013-11-20 14:22:15 GMT --- Thank your for this bug report and a suggestion how to fix. Unfortunately, this is not enough. If PERL_LOCAL_LIB_ROOT is not set, then tcsh will bail out with undefined variable and the variable will not get set: [test@rhel-7-0 ~]$ echo ${?PERL_LOCAL_LIB_ROOT} 0 [test@rhel-7-0 ~]$ setenv PERL_LOCAL_LIB_ROOT "${PERL_LOCAL_LIB_ROOT}:/home/test/perl5" ; PERL_LOCAL_LIB_ROOT: Undefined variable. [test@rhel-7-0 ~]$ echo $? 1 [test@rhel-7-0 ~]$ echo ${?PERL_LOCAL_LIB_ROOT} 0 This is a know issue to the upstream <https://rt.cpan.org/Public/Bug/Display.html?id=85667> with no ratified solution yet. --- Additional comment from Petr Pisar on 2013-11-21 10:50:37 GMT --- Due to CSH limits on subcommand substitution and parsing if-then-else statemens, appending to a variable FOO can be achieved this way: test 1 == ${?FOO} && setenv FOO "a:${FOO}" || setenv FOO "a"; ---- All Fedoras are affected.
Created attachment 827174 [details] Fix This patch with these changes: --- a/perl-homedir.csh +++ b/perl-homedir.csh @@ -11,10 +11,10 @@ if (-f "$HOME/.perl-homedir") then source "$HOME/.perl-homedir" endif -alias perlll 'eval `perl -Mlocal::lib`' +alias perlll 'eval "`perl -Mlocal::lib`"' # if system default if ("x$PERL_HOMEDIR" == "x1") then - eval `perl -Mlocal::lib` + eval "`perl -Mlocal::lib`" endif fix this issue. However the patch is not suitable for upstream, as upstream is going to rewrite the code.
perl-local-lib-1.008010-4.fc20 has been submitted as an update for Fedora 20. https://admin.fedoraproject.org/updates/perl-local-lib-1.008010-4.fc20
perl-local-lib-1.008010-2.fc19 has been submitted as an update for Fedora 19. https://admin.fedoraproject.org/updates/perl-local-lib-1.008010-2.fc19
perl-local-lib-1.008010-2.fc18 has been submitted as an update for Fedora 18. https://admin.fedoraproject.org/updates/perl-local-lib-1.008010-2.fc18
perl-local-lib-1.008010-4.fc20 works fine
perl-local-lib-1.008010-2.fc18 has been pushed to the Fedora 18 stable repository. If problems still persist, please make note of it in this bug report.
perl-local-lib-1.008010-2.fc19 has been pushed to the Fedora 19 stable repository. If problems still persist, please make note of it in this bug report.
perl-local-lib-1.008010-4.fc20 has been pushed to the Fedora 20 stable repository. If problems still persist, please make note of it in this bug report.