This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: how to get the windows PATH env in cygwin

DePriest, Jason R. wrote:
> On Tue, Dec 1, 2009 at 10:03 AM, Andy Koppe <> wrote:
>> 2009/12/1 Reinier Post:
>>>> If you want to see the Windows PATH setting unmolested by Cygwin, you
>>>> will either need to strip out the additions set by /etc/profile or avoid
>>>> running under an environment modified by /etc/profile.
>>> It doesn't add, actually - it replaces it.
>> You're wrong. The Cygwin DLL at startup translates the Windows PATH
>> variable. And this line in /etc/profile adds to it:
>> PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:$PATH
> This is completely and totally true.

I'm sorry, but it is not true.  Maybe there is a misunderstanding though.

> To verify it, all you have to do is open a bash prompt (Cygwin.bat,
> mintty, rxvt, whatever) and then launch a cmd.exe or powershell.
> Check the path in the bash prompt and you will see the cygwin stuff at
> the beginning of it.

Yes, indeed you will see the Cygwin paths prepended to PATH as you say.
 Andy said this as well and even included the line from /etc/profile
which does this work when you run a login shell (i.e. bash --login under
rxvt or what-have-you).  However, since the remainder of PATH derives
from the Windows-native value of PATH (converted automatically by Cygwin
to POSIX-style), we're saying that the value of PATH was *modified*
rather than *replaced* entirely.  To say that PATH was entirely replaced
is to imply that the new value of PATH has no basis whatsoever in the
original value of PATH.

> Check the path in the cmd.exe or powershell prompt which was run
> *after* the bash script updated the path and you will see that it does
> *not* include the cygwin paths.
> It doesn't override what you have set anywhere but in cygwin's magic space.

No one is arguing that Cygwin ever modifies PATH system-wide or for
anything aside from Cygwin programs.  In the base case, a Cygwin program
will see the value of PATH converted to POSIX-style.  If that same
Cygwin program is run from a login shell, it will see the PATH as
further modified by /etc/profile as Andy indicated.

Windows programs will only ever see a Windows-style PATH no matter what;
however, they WILL see the Cygwin paths converted to Windows-style and
prepended IF they were run from a login shell under Cygwin.


Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]