Symlink issue?

L A Walsh cygwin@tlinx.org
Mon Aug 23 19:00:55 GMT 2021



On 2021/08/21 17:55, Brian Inglis wrote:
> On 2021-08-21 18:40, Thomas Wolff wrote:
> >
> >
> > Am 21.08.2021 um 23:59 schrieb Ken Brown via Cygwin:
> >> On 8/21/2021 4:15 PM, Lavrentiev, Anton (NIH/NLM/NCBI) [C] via Cygwin
> >> wrote:
> >>> Hi,
> >>> Please consider the following Cygwin session:
> >>> $ cd ~
> >> I don't know why bash completion suggests something different.  My
> >> guess (and it's only a guess) is that bash completion takes a
> >> shortcut for performance reasons.
---
    cd w/completion uses the physical path because completion
is an external "script", while "cd" alone uses bash's internal
"logical" dir.
 
> > The symlink/.. confusion is a dreadful trap since Unix times.
> > Unfortunately, bash completion does not consider path resolution, so
> > if any, it's a bash completion bug.
---
    Not a bug or trap.  It is a user choice to have 'cd' use logical paths
instead of physical paths, whereas completion uses physical paths.

You can get physical paths w/cd with "set -P", but most people find
logical paths more friendly:

/tmp> ln -s .. foo
/tmp> cd foo            # really cd's into '/'
/tmp/foo> cd ..         # but logically '/tmp/foo'
/tmp> set -P            # turns on physical paths w/cd
/tmp> cd foo            # now cd 'foo' puts you in physical '/'
/> cd -                 # go back to last dir before 'cd'
/tmp> set +P            # turn off physical paths (logical back on)
/tmp> cd foo
/tmp/foo> cd ..
/tmp> rm foo

Or, as previously suggested.  One time usage w/param to 'cd'.
(Don't alias this, would be rather confusing)
>
> Try using cd -P (via alias?) which may resolve physically if it works.
> Otherwise enjoy the quirks of cd via symlinks and .. resolution after.

It's not just '..', but also when you 'cd' into a mounted
file system, then completion and other utils _may_
show you the contents of the dir the file system is mounted on.





More information about the Cygwin mailing list