delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2021/03/19/09:35:12

X-Recipient: archive-cygwin AT delorie DOT com
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org DBD3F3857C7F
Authentication-Results: sourceware.org;
dmarc=pass (p=none dis=none) header.from=yandex.ru
Authentication-Results: sourceware.org;
spf=pass smtp.mailfrom=anrdaemon AT yandex DOT ru
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail;
t=1616160902; bh=mZWl44h4fGbfld17HTfHtTem8E0/HbwXkkKveWkLeKk=;
h=In-Reply-To:Subject:To:From:Message-ID:References:Date:Reply-To;
b=qwKkwZepUQExr3wYI4bnmybxi2rr/gpuDUN55S7iY5gSiC3Hi3POKFBnYRIN8d68u
+DliNLcDAQ5hCL8UjdObdzStw6MC3BLKnxJha2Ykg9B3pntRBX8bZoSeukt4qK9KV6
7TD8Q6rs3pMiJa2sR3oizIZsZXs93L9Z6wcBfdqg=
Authentication-Results: myt6-722f198f7b2f.qloud-c.yandex.net;
dkim=pass header.i=@yandex.ru
Date: Fri, 19 Mar 2021 16:29:23 +0300
From: Andrey Repin <anrdaemon AT yandex DOT ru>
X-Mailer: The Bat! (v6.8.8) Home
X-Priority: 3 (Normal)
Message-ID: <691553387.20210319162923@yandex.ru>
To: L A Walsh <cygwin AT tlinx DOT org>, cygwin AT cygwin DOT com
Subject: Re: Different symlink resolution in native console vs. terminal
In-Reply-To: <6050B3DF.2090805@tlinx.org>
References: <837599661 DOT 20210311015158 AT yandex DOT ru> <6050B3DF DOT 2090805 AT tlinx DOT org>
MIME-Version: 1.0
X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00, DKIM_SIGNED,
DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, KAM_THEBAT,
NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS,
TXREP autolearn=no autolearn_force=no version=3.4.2
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on
server2.sourceware.org
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.29
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Unsubscribe: <https://cygwin.com/mailman/options/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=unsubscribe>
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>
Reply-To: cygwin AT cygwin DOT com
Errors-To: cygwin-bounces AT cygwin DOT com
Sender: "Cygwin" <cygwin-bounces AT cygwin DOT com>

Greetings, L A Walsh!

> On 2021/03/10 14:51, Andrey Repin wrote:
>> Running `pwd -P` or `readlink -e .` in a specific directory from native
>> terminal provide unresolved answers.
>>
>> The directory $HOME/Documents/EVE is a symlink pointing to $HOME\Documents\Games\EVE.
>>
>> When running either command inside the directory from native terminal, the
>> result is literally /home/Documents/EVE, but when running the same command
>> from mintty inside same directory, the results may vary.
>>
>> $HOME/Documents/EVE or $HOME/Documents/Games/EVE (which is expected answer).
>> It also seems, there are results difference between `bash -l` `and bash -i`
>> and `pwd -P` and `readlink -e .`.
>> Generally, "pwd" is more correct.
>>   
> 1) When you look at the processes(native v mintty), are both the
> same #bits?

Interesting question. Originally I tested in 32-bit console, but it seems this
is not relevant.

$ START "" "%SystemRoot%\sysnative\cmd.exe"
$ CD /D "%USERPROFILE%\Documents\EVE"
$ readlink -e .
/home/anrdaemon/Documents/EVE

There's even MORE interesting sequence:

[anrdaemon AT DAEMON2 C:\Users\anrdaemon\Documents\EVE]
$ bash -i
anrdaemon AT daemon2:cygwin:~/Documents/EVE
$ readlink -e .
/home/anrdaemon/Documents/EVE
anrdaemon AT daemon2:cygwin:~/Documents/EVE
$ cd "$( pwd )"
anrdaemon AT daemon2:cygwin:~/Documents/EVE
$ readlink -e .
/home/anrdaemon/Documents/Games/EVE

> 2) Can you reproduce this with any other dir?

In fact. I picked a directory outside Cygwin mount table for this test:

[anrdaemon AT DAEMON2 C:\]
$ MKLINK /J "C:\Games\KP2" "C:\Games\_old\KP2"
Junction created for C:\Games\KP2 <<===>> C:\Games\_old\KP2

[anrdaemon AT DAEMON2 C:\Games]
$ CD /D "C:\Games\KP2"

[anrdaemon AT DAEMON2 C:\Games\KP2]
$ pwd -P
/c/Games/KP2

[anrdaemon AT DAEMON2 C:\Games\KP2]
$ readlink -e .
/c/Games/KP2

[anrdaemon AT DAEMON2 C:\Games\KP2]
$ bash -i
anrdaemon AT daemon2:cygwin:/c/Games/KP2
$ pwd -P
/c/Games/_old/KP2
anrdaemon AT daemon2:cygwin:/c/Games/KP2
$ readlink -e .
/c/Games/KP2
anrdaemon AT daemon2:cygwin:/c/Games/KP2
$ cd "$( pwd )"
anrdaemon AT daemon2:cygwin:/c/Games/KP2
$ pwd -P
/c/Games/_old/KP2
anrdaemon AT daemon2:cygwin:/c/Games/KP2
$ readlink -e .
/c/Games/_old/KP2

However, the C:\Games is a volume mount point. May be that is a problem?

Another test, this time no external factors, all directories in path are real:

[anrdaemon AT DAEMON2 C:\]
$ MKLINK /J "C:\dev\php" "C:\dev\temp\install\php"

[anrdaemon AT DAEMON2 C:\]
$ CD /D "C:\dev\php"

[anrdaemon AT DAEMON2 C:\dev\php]
$ pwd -P
/c/dev/php

[anrdaemon AT DAEMON2 C:\dev\php]
$ readlink -e .
/c/dev/php

> Both Documents and Games have multiple copies due to the public
> docs+games  are in the docs+games library (along with user versions).

As shown in the tests, this is not really a problem.

> Maybe the winterm is picking up a different file?

Eh? Terminal is just a display.

> I think one or both of those dirs have a GUID associated with them, maybe
> one is using a different GUID than the other?

???

> I also have Win7x64 but have never seen them misbehaving...

> How was your link made?

EVE is a symlink, but junctions behaving just the same and do not require
elevation to create.


-- 
With best regards,
Andrey Repin
Friday, March 19, 2021 15:49:11

Sorry for my terrible english...

--
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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019