Hi,
Hongyi Zhao <[email protected]> writes:
> Using env command:
>
> env PATH="/custom/path:$PATH" my_command
>
> Directly setting the environment variable:
>
> PATH="/custom/path:$PATH" my_command
[...]
> In what scenarios would it be more appropriate to use env versus
> directly setting the environment variable? Are there specific
> advantages or disadvantages associated with each method?
One minor problem is that csh [1] doesn't use the same syntax for
variable assignment. Up until recently FreeBSD used csh as the default
login shell for root accounts. I doubt you will run into the problem
anywhere else.
Here is an example:
$ bash
$ env | grep '^VAR'
$ env VAR='abc' | grep '^VAR'
VAR=abc
$ VAR='abc' env | grep '^VAR'
VAR=abc
$ csh
% env | grep '^VAR'
% env VAR='abc' | grep '^VAR'
VAR=abc
% VAR='abc' env | grep '^VAR'
VAR=abc: Command not found.
You could use:
% setenv VAR 'abc' ; env | grep '^VAR'
But that would set the environment variable in the parent process which
isn't the intention.
Collin
[1] https://en.wikipedia.org/wiki/C_shell