DMARC-Filter: OpenDMARC Filter v1.4.2 delorie.com 50DH51DB2905403 Authentication-Results: delorie.com; dmarc=pass (p=none dis=none) header.from=cygwin.com Authentication-Results: delorie.com; spf=pass smtp.mailfrom=cygwin.com DKIM-Filter: OpenDKIM Filter v2.11.0 delorie.com 50DH51DB2905403 Authentication-Results: delorie.com; dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=XBGiZGAM X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4FF0A3858CDB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1736787899; bh=lsL3geLZp862UcjqLoOrybRzmViFzxi9q+I/30ImukU=; h=Date:Subject:To:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=XBGiZGAMiEsJa3dxYClicHj+aCSprYR3L3HFjj48RBjX5jSF17b1f5N0Lp8I/8V8t Yw/owKwCC33y5o5yCRB2pC8A0Zp8t3Hf8T6k4YcHI6dmxyQn/GYu+pS1lZWpRqXqN2 WAVNHQNEFhkT4D2c6ma2Ip4J8/6/v0mJV0SzBPkQ= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 105B23858D21 ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 105B23858D21 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1736787815; cv=none; b=WEnRjmymfKoSNZmaLKDW7Ihg/KqxAJux4v5Lkb3bB/2gyGCQDJ0lVakUA6V452d/shgD1j/d6UVY2w8kSXOj1ZntYZ6lYrM1KdjfM3cyg25UID8A6Fv2UTfbuK23+pY/9XZH4VhNPe0puRmKIcGjftj2x4PKVsEA+XTwvph+RYM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1736787815; c=relaxed/simple; bh=nydq+jXkkO/nfTcBtqSoQxjohZHFuXk0WPfCS4BtRhQ=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=r/vDw/5OYqJRCjZSE4sAkc6NqKJiHyamEWa1X7nDLHcNCGFeYZAZN6t0ip/9ZKtDK+7BWuVGcfjPx7vO3CkBwREWiH4nMFGI3Ox1BcQ5/M3O90UkN1yPyrkHkonogIwbGzSS1QwOUROhbev4UJtqMj9EscMvYlJyxhqQ5qEmLWU= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 105B23858D21 Message-ID: <251f0ab7-aae1-4198-a863-fbbe64d0c702@kircheis.it> Date: Mon, 13 Jan 2025 18:03:27 +0100 MIME-Version: 1.0 Subject: Re: env and PATH To: cygwin AT cygwin DOT com References: <77a3709d-ec4d-497b-bf6c-75f29dc8c992 AT kircheis DOT it> <1756102695 DOT 20250104044139 AT yandex DOT ru> <21a99c98-1a16-4ffb-97f4-fa9480f7b02d AT kircheis DOT it> <383539154 DOT 20250104231316 AT yandex DOT ru> <dfce0589-5f52-408c-a8f9-f42771c724a3 AT kircheis DOT it> <123712861 DOT 20250109103130 AT yandex DOT ru> <9375d5cd-792e-45f4-958b-40521d15afd5 AT kircheis DOT it> <1056238423 DOT 20250113115946 AT yandex DOT ru> In-Reply-To: <1056238423.20250113115946@yandex.ru> X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.30 List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com> List-Archive: <https://cygwin.com/pipermail/cygwin/> List-Post: <mailto:cygwin AT cygwin DOT com> List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help> List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>, <mailto:cygwin-request AT cygwin DOT com?subject=subscribe> From: Federico Kircheis via Cygwin <cygwin AT cygwin DOT com> Reply-To: Federico Kircheis <federico AT kircheis DOT it> Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Sender: "Cygwin" <cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com> On 13/01/2025 09.59, Andrey Repin wrote: > Greetings, Federico Kircheis! > >> On 09/01/2025 08.31, Andrey Repin wrote: >>> The apparent issue you are missing is that you are calling native app from >>> Cygwin environment. >>> Each have its own rules, and to have it working with minimal issues, you'd >>> need to satisfy both sides. >>> In specific case, PATH is a special environment variable for both sides, and >>> you have to correctly translate it from one side to the other. > >> What do you mean? >> I'm perfectly aware that PATH is special, and why it is, I also wrote it in the first mail. > > It is special TO BOTH SIDES. The "both" is the key word. > >> I questioned the statement that the conversion is expected _because_ `env` >> expects POSIX semantics and parsed my command according to that. > > No, it is expected because of its meaning to both sides AND because env don't > know, what kind of program it is running. But I know that the program is a windows program, thus a setting for manually disabling the conversion made sense (at least in my head). > Runtime knows, env does not. Runtime does conversion, not env. Ah, ok I missed the part that the conversion is not done by env but somewhere else, thus a flag for env does might not make that much sense. >> Since POSIX says nothing about the interaction of env and PATH, > > Why it should? This is Cygwin specifics. > >> and conversions are not described by the standard (as you confirmed), the >> behavior is expected because of what cygwin does, not because of POSIX. (and >> yes, I knew cygwin does the conversion from cygwin PATH to Windows PATH, so >> that was expected, I did not expect it to break a Windows PATH and to depend >> on the current drive) > > env don't expect Windows paths to begin with. And dependency on current drive > is coincidental, since your paths, read as POSIX, were interpreted as relative. > >> The main question of this thread was: > >> "I noticed that PATH is converted, and cannot find a switch do disable this >> conversion. Is it possible to define an environment and use it as is, >> without having some implicit conversions?" > >> I mean, there are other variables that have special meanings; all those that define a path. >> (Examples would be HOME, XDG_CACHE_HOME, XDG_DATA_HOME, ...) > > Special to both sides? > While HOME and TMP do have a meaning to both sides (though, HOME is > questionable), XDG_* ones are purely *NIX specific. XDG_* are not purely unix specific; they are just environment variables. For example, I actually expect a multiplatform programs that respect XDG_* on a Linux machine to respect it also on Windows. Why should a program that supports XDG_* environment variables go out of it's way and explicitly ignore them? >> The answer seems to be no (which was what I feared). > >> Thus special casing for some environment variables is necessary as there is no such switch. >> I saw PATH as particularly problematic because I was not aware of the option --path of cygpath. > >>> I provided a wrapper script I use myself, you could add any massaging to it >>> that you feel necessary. Like `unset TERM` or PATH modifications. > >> Attachment seems to be missing, > > Was not an attachment. (The list is not very tolerant to those.) Ah sorry, I thought you provided a wrapper script as attachment, and could not find it. >> but I think unsetting environment variables >> one by one, changing existing, and adding the missing, is too error-prone. >> Defining a "clean" environment once seems to have less chances to have some errors. > > That's up to you. > I have more intricate wrappers than this one. Just didn't want to flood the > list. -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple