env and PATH
Andrey Repin
anrdaemon@yandex.ru
Sat Jan 4 01:41:39 GMT 2025
Greetings, Federico Kircheis!
> Hello to everyone,
> I've noticed that env seems to handle the environment variable PATH in a particular way
> -----
>> cd /d;
>> env -i PATH='C:\Windows;C:\Windows\system32;' /c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe
> # in the powershell instance
> echo $env:PATH
> C;D:\Windows;C;D:\Windows\system32;
> ----
Fully expected behavior. `env` expects POSIX semantics and parsed your
command according to that.
The results are, as I said, expected, although not by you.
> From this and other examples it seems that env uses for PATH as
> separator, then preprends the current drive to all paths that begin with '\'
> (thus all of them), and ";" is treated as part of the path
Exactly.
> I would like to use the PATH as-is in the invoked program, just like it is done for other variables, for example
> ----
> cd /d
> env -i OPATH='C:\Windows;C:\Windows\system32;'
> /c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe
> # in the powershell instance
> echo $env:OPATH
> C:\Windows;C:\Windows\system32;
> ----
> in this case OPATH is forwarded as-is to powershell.exe.
> I understand that PATH is special, that for cygwin processes some transformation might be necessary.
It is, but in a way you suppose.
> But is there any way to achieve what I'm trying?
Yes. Pass the POSIX paths in $PATH, they will be converted to Windows ones
when invoking a Windows process.
Also, I strongly suggest using /proc/cygdrive/ tree in such case, especially
when you make scripts for somebody else.
> I search if there is maybe a separation option for telling env to use PATH as-is, but could not find none.
There's no need or reason to do it.
In your case, what you wanted to achieve could be written as
>> env -i "PATH=$(cygpath -UW):$(cygpath -US):$PATH" pwsh
(The "%SystemRoot%" is NOT NECESSARILY 'C:\Windows', though you CAN use
"%SystemRoot%\System32" with confidence, once you acquired the former.)
(Also, why the *** you are using v1.0? Get v7 already, save yourself the
tragedy.)
--
With best regards,
Andrey Repin
Saturday, January 4, 2025 04:28:52
Sorry for my terrible english...
More information about the Cygwin
mailing list