On Dec 9, 2003, at 10:09 PM, Pablo Cusnir wrote:


Is there a way using Perl to add to the environment
variable PATH a new path, and that addition will be
valid after the script is ran and not only for the script's scope.
I'm working in cshell in Solaris 5.8

let me see IF I get your idea.


I have a command say "add_path"  so that
you could do something like

        vladimir: 70:] echo $PATH
        /usr/local/bin:/usr/X/bin:/usr/bin
        vladimir: 71:] add_path
        vladimir: 72:] echo $PATH
        /happy/place/here:/usr/local/bin:/usr/X/bin:/usr/bin
        vladimir: 73:]

that's not really going to happen, since you want to
change the environment of the currently running process
by having a sub-process 'signal it'...

What is relatively 'easy' to do, is to create a sub_shell
that will run with a different set of environmental variables.

        vladimir: 89:] echo $BOB
        BOB: Undefined variable
        vladimir: 90:] perl add_path
        vladimir% echo $BOB
        my bob here
        vladimir% exit
        vladimir% vladimir: 91:] sed 's/^/### /' add_path
        ### #!/usr/bin/perl -w
        ### use strict;
        ###
        ### my $path = '/happy/place/here';
        ### $ENV{PATH} = $path . ":" . $ENV{PATH} ;
        ### $ENV{BOB} = "my bob here";
        ### exec("/usr/bin/csh -f");
        vladimir: 92:]

This is a trick I use when I am trying to run some
'alternative environment' than my default home shell.

But as you notice, it is using 'exec()' to replace the
script space a csh that will not source my .login
and .cshrc file. It also means that I have a 'double exit'
case, where I have to exit out of the current "shell"
and then out of my 'default login shell'.

Remember it is easier to change the behavior of a sub_shell
than it is to try to signal upwards to some calling shell.
Try not to go that way...


ciao drieux

---


-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>




Reply via email to