processing passwords?
Kenneth Brody
kenbrody at spamcop.net
Tue Oct 16 07:49:46 PDT 2012
On 10/15/2012 6:26 PM, Jean-Pierre A. Radley wrote:
> Jay Ashworth propounded (on Mon, Oct 15, 2012 at 05:35:02PM -0400):
> | ----- Original Message -----
> | > From: "Jean-Pierre A. Radley" <appl at jpr.com>
[...]
> | > An assignment exists in the environment of the shell in which it is
> | > made.
> | > An assignment preceding a command makes it exist in the command's
> | > environment too.
> | > Since the command in this case an "export" of that assignment, the
> | > assignment persists in the environment of the shell in which it was
> | > made as well as in all of that shell's children.
> |
> | Not quite.
> |
> | ==================8<====================
> | jra at princeton:~> unset JRA # make sure the variable isnt set.
> | jra at princeton:~> JRA=test echo $JRA # set it in the environment of echo
> | # find out that it wasn't set by the time
> | # the statement was parsed
> | jra at princeton:~> echo $JRA # how bout now?
> | # still not set
> | jra at princeton:~> JRA=test bash # try inline with a subshell
> | jra at princeton:~> echo $JRA
> | test # INSIDE THE SUBSHELL, it's set
> | jra at princeton:~> exit # exit the subshell
> | jra at princeton:~> echo $JRA # set up top?
> | # no, as expected.
> | jra at princeton:~>
> |
> | ==================8<====================
> |
> | So the important part of your second assertion:
> |
> | > An assignment preceding a command makes it exist in the command's
> | > environment too.
> |
> | is, as my memory led me to believe, incorrect: assignments which precede
> | a command name on the command line do *not* affect the environment of the
> | shell which processes them, only that of the command specified. I myself
> | had not realized that the shell parsed the command line before setting
> | up the child environment and running it, which is why
> |
> | $ JRA=test echo $JRA
> |
> | does not work in the superficially obvious manner, but it makes sense
> | after I think about it -- it's like trying to use sudo with redirection.
> |
> | That behavior is documented back to the v7 shell, I'm pretty sure, though
> | my v7 UPM is at home.
> |
>
> Your shell isn't behaving like mine, in that case. I start out in tcsh
> and:
>
> jpradley:appl 6 sh
> $ unset JPR
> $ JPR=test echo $JPR
>
> $ echo $JPR
> test
I hate to do it, but I have to side with Jay against JP on this one. My
understanding has always been that "name=val command" sets the value of the
environment variable only for "command", and not in the shell. It's been
this way since at least TRS-Xenix days. In fact, "man sh" on my Linux box says:
> The environment for any simple command or function may be
> augmented temporarily by prefixing it with parameter
> assignments, as described above in PARAMETERS. These
> assignment statements affect only the environment seen by
> that command.
What does "echo $JPR" say *before* the echo command?
--
Kenneth Brody
More information about the Filepro-list
mailing list