Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

cannot modify LINUX env vars

by ISAI student (Scribe)
on Feb 06, 2011 at 09:28 UTC ( #886490=perlquestion: print w/replies, xml ) Need Help??
ISAI student has asked for the wisdom of the Perl Monks concerning the following question:

Hello all. I am trying to set LINUX environment variables via the %ENV and fail. The chanegs I do to the %ENV do not "stick" at all. I have tried even a simple perl -e and failed. See 1 line two commands LINUX output:
perl -e '$ENV{'pathy'}="kuku"; echo $pathy
I would have expected:
perl -e '$ENV{'pathy'}="kuku"; echo $pathy kuku

Replies are listed 'Best First'.
Re: cannot modify LINUX env vars
by eyepopslikeamosquito (Chancellor) on Feb 06, 2011 at 09:54 UTC
Re: cannot modify LINUX env vars
by Corion (Pope) on Feb 06, 2011 at 09:39 UTC

    That's not how the environment works. Changes are only visible to the current process and its children. You cannot change the "upwards" environment.

    The traditional technique is to output a shell script that the "upper" process then evaluates:

    # In the parent shell do: $(perl -wle 'print "export pathy=kuku') echo $pathy
Re: cannot modify LINUX env vars
by Khen1950fx (Canon) on Feb 06, 2011 at 18:15 UTC
    I tried setenv. I modified the source and used this:
    #!/usr/bin/perl use strict; use warnings; setter( $ENV{'pathy'} = 'kuku' ); system("env"); sub setter { shift; while ( my ( $key, $value ) = splice @_, 0, 2 ) { $ENV{$key} = $value; } return; }

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://886490]
Approved by Perlbotics
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (6)
As of 2018-06-17 22:43 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (107 votes). Check out past polls.