The environment variables have nothing to do with the shell.
The only thing the shell does is give you a way to set environment
variables, and different shells have different syntax for that. But
environment variables are a property of your login session, not
of the shell.

So the short answer is: Perl does not need to know or care about what
shell you're running in (although that's available as the environment
variable SHELL). Perl scripts just get the environment variables for
"free" as part of the startup.

Hope that answers it.

Kim Helliwell
[EMAIL PROTECTED]
Homepage: http://homepage.mac.com/kimgh

On Jul 28, 2005, at 8:10 PM, John Horner wrote:

Recently there was a change at work -- all http access now needs to go through a proxy.

So if I have a script using LWP::UserAgent or similar, I have to add

    $UA->proxy( ['http'] , 'http://proxy.fake.com:8080' );

to all my scripts. Which is a big pain. So a *NIX guy said "you shouldn't need to do that if you can add an environment variable to your shell".

So, as I use tcsh, not bash, which is the default nowadays, I added this to .tcshrc:

    setenv http_proxy http://proxy.fake.com:8080

and it seemed to work, but leaving aside the specifics of the scripts, how would Perl "know" that I use tcsh, not bash? Isn't that a preference of the Terminal app, not of me as a user? A script run as a cron job, does it run using all the environment variables as if I'd typed its name into the Terminal? What about a script run from BBEdit? What if I "su root" and run it?

I'd really appreciate someone explaining the relationship of script to shell and user.




Reply via email to