env and PATH

Brian Inglis Brian.Inglis@SystematicSW.ab.ca
Fri Dec 20 22:15:28 GMT 2024


Hi Federico,

Looks like non-Cygwin program launch is messing up PATH not on the current drive:

$ cd /proc/cygdrive/d
$ cat -A /proc/cygdrive/d/tmp/t.cmd
echo %PATH%^M$
$ env -i PATH='C:\Windows;C:\Windows\system32;' /bin/sh -c 'echo $PATH'
C:\Windows;C:\Windows\system32;
$ env -i PATH='C:\Windows;C:\Windows\system32;' `cygpath $COMSPEC` /s /c \
"d:\tmp\t.cmd"
D:\>echo C;D:\Windows;C;D:\Windows\system32;
C;D:\Windows;C;D:\Windows\system32;
D:\>exit

On 2024-12-20 09:51, Federico Kircheis via Cygwin wrote:
> 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;
> ----
> 
> 
>  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
> 
> 
> 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.
> 
> But is there any way to achieve what I'm trying?
> 
> I search if there is maybe a separation option for telling env to use PATH as- 
> is, but could not find none.
> 
> 
> Best
> 
> Federico
> 

-- 
Take care. Thanks, Brian Inglis              Calgary, Alberta, Canada

La perfection est atteinte                   Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter  not when there is no more to add
mais lorsqu'il n'y a plus rien à retirer     but when there is no more to cut
                                 -- Antoine de Saint-Exupéry



More information about the Cygwin mailing list