Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re: I need to export variable as another user

by aaron_baugher (Curate)
on Aug 06, 2012 at 12:55 UTC ( #985697=note: print w/replies, xml ) Need Help??

in reply to I need to export variable as another user

Aside from the many errors in your script, what you're trying to do won't work. A shell's environment is only passed to its child processes (if exported), not its parent or any siblings. So when you open a subshell with system in line 6 and set some environment variables for that subshell by running a couple of export commands, those variables go away as soon as that subshell closes and the system command returns. They will not be passed to the subshells started by your next two commands.

So you have a few options: only open one subshell, and talk to it with a two-way pipe. That could be done with a module like IPC::Open3, or a few other ways. You could also put your export commands in an file that's automatically sourced by your particular shell, but that would depend on your shell. Another (maybe simplest) option would be to set your environment variables within your Perl script by using the %ENV hash, so they can be inherited by any subshells. No need to try to export them in a dot-profile:

print 'Before setting: ', `echo \$MYVAR`; $ENV{MYVAR} = 'Howdy all!'; print 'After setting: ', `echo \$MYVAR`;

Aaron B.
Available for small or large Perl jobs; see my home node.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://985697]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (3)
As of 2017-08-23 23:57 GMT
Find Nodes?
    Voting Booth?
    Who is your favorite scientist and why?

    Results (360 votes). Check out past polls.