Re: the usage of env
Hi,
pyh@gmx.it wrote:
> I am not sure how 'env' command works.
Read the output of
man env
> for example, what's the difference between '/usr/bin/perl' and 'env perl' ?
Reading the man page i'd say it's the same difference as between
"/usr/bin/perl" and "perl". I.e. the former runs explicitely a particular
program file, whereas the latter runs a program file which the shell
picks for you, depending on the setting of the PATH variable.
echo "$PATH"
> I know env may set a environment variable in system,
Not "in system", but for the particular program run which gets started by
"env". "man env" says:
SYNOPSIS
env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]
DESCRIPTION
Set each NAME to VALUE in the environment and run COMMAND.
The NAME=VALUE pairs will be in effect only as long as "env" and the
started program run.
(In a bash shell, the main advantages over plain
[NAME=VALUE]... [COMMAND [ARG]...]
are probably the env option -i, which disables all inherited exported
variables, and -u which disables a particular inherited variable.)
> so my question also includes:
> 1. where to see a shell environment variable? I tried 'echo $ENV'
> showing nothing.
If you want to see all exported variables:
env
because the statement in "man env":
If no COMMAND, print the resulting environment.
Example shell session (with prompt "$"):
$ export x=X
$ y=Y
$ echo "$x"
X
$ echo "$y"
Y
$ env | grep '^[xy]='
x=X
$
The not exported variale "y" does not show up in env's output.
> why 'env perl' just works?
Program "env" (or its helpers) finds a program file with name "perl"
in one of the directories which are listed in $PATH.
Have a nice day :)
Thomas
Reply to: