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.