On Wed, Jun 5, 2024 at 5:24 PM Collin Funk <collin.fu...@gmail.com> wrote:
>
> Hi,
>
> Hongyi Zhao <hongyi.z...@gmail.com> 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

Thank you very much to everyone here for their responses to this
issue. I need to carefully read the relevant explanations and further
observe in subsequent practices to see if I have fully understood the
issue or if there are still areas that need further discussion.

Regards,
Zhao

Reply via email to