[Bug 1033018] New: syntax error in /etc/profile.d/perl-homedir.csh (perl-local-lib/perl-homedir)

bugzilla at redhat.com bugzilla at redhat.com
Thu Nov 21 12:29:51 UTC 2013


https://bugzilla.redhat.com/show_bug.cgi?id=1033018

            Bug ID: 1033018
           Summary: syntax error in /etc/profile.d/perl-homedir.csh
                    (perl-local-lib/perl-homedir)
           Product: Fedora
           Version: rawhide
         Component: perl-local-lib
          Severity: low
          Priority: high
          Assignee: iarnell at gmail.com
          Reporter: ppisar at redhat.com
        QA Contact: extras-qa at fedoraproject.org
                CC: iarnell at gmail.com, jkachuck at redhat.com,
                    mmaslano at redhat.com,
                    perl-devel at lists.fedoraproject.org, ppisar at redhat.com,
                    wgomerin at redhat.com
   External Bug ID: CPAN 85667



+++ 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 at rhel-7-0 ~]$ echo ${?PERL_LOCAL_LIB_ROOT}
0
[test at rhel-7-0 ~]$ setenv PERL_LOCAL_LIB_ROOT
"${PERL_LOCAL_LIB_ROOT}:/home/test/perl5" ;
PERL_LOCAL_LIB_ROOT: Undefined variable.
[test at rhel-7-0 ~]$ echo $?
1
[test at 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.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
Unsubscribe from this bug https://bugzilla.redhat.com/token.cgi?t=jn9WnmhloX&a=cc_unsubscribe



More information about the perl-devel mailing list