Stumbled upon relative name resolution across symlinks

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Stumbled upon relative name resolution across symlinks

Andrey Repin
Greetings, All!

$ pwd
/home/anrdaemon/Documents/NIX/CA-tutorial/test

$ ls -ld bin ca-profile
lrwxrwxrwx 1 anrdaemon None  61 ноя  2 01:15 bin -> /home/anrdaemon/Documents/NIX/CA-tutorial/svn-working/scripts
-rwx--x--x 1 anrdaemon None 588 дек 24  2017 ca-profile

$ cat bin/../ca-profile
cat: bin/../ca-profile: No such file or directory

$ cat $( realpath -Le "bin/../ca-profile" )
# @version $Id: ca-profile 82 2014-02-08 05:24:12Z anrdaemon $
...

In simpler words, the bin directory is symlinked from elsewhere.
realpath -Le resolves correctly, but all other filesystem functions fail.

I vaguely recall that there was some discussion on the matter, but search
returns too many results, can't read them all.
My question, basically: is this expected way of things?
If so, I'd just workaround it. Sad but doable.


--
With best regards,
Andrey Repin
Friday, November 2, 2018 1:31:12

Sorry for my terrible english...
--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: Stumbled upon relative name resolution across symlinks

Ken Brown-6
On 11/1/2018 6:39 PM, Andrey Repin wrote:

> Greetings, All!
>
> $ pwd
> /home/anrdaemon/Documents/NIX/CA-tutorial/test
>
> $ ls -ld bin ca-profile
> lrwxrwxrwx 1 anrdaemon None  61 ноя  2 01:15 bin -> /home/anrdaemon/Documents/NIX/CA-tutorial/svn-working/scripts
> -rwx--x--x 1 anrdaemon None 588 дек 24  2017 ca-profile
>
> $ cat bin/../ca-profile
> cat: bin/../ca-profile: No such file or directory
>
> $ cat $( realpath -Le "bin/../ca-profile" )
> # @version $Id: ca-profile 82 2014-02-08 05:24:12Z anrdaemon $
> ...
>
> In simpler words, the bin directory is symlinked from elsewhere.
> realpath -Le resolves correctly, but all other filesystem functions fail.

I might be misunderstanding you, but are you saying that you think 'bin/..'
should resolve to the current working directory?  This is not what Posix says.
See http://pubs.opengroup.org/onlinepubs/9699919799/, starting at "If a symbolic
link is encountered during pathname resolution...".  The reason you got what you
wanted using 'realpath -L' is that the -L option specifically asks for that:

$ man realpath
[...]
        -L, --logical
               resolve '..' components before symlinks

Ken

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: Stumbled upon relative name resolution across symlinks

cyg Simple
In reply to this post by Andrey Repin
On 11/1/2018 6:39 PM, Andrey Repin wrote:

> Greetings, All!
>
> $ pwd
> /home/anrdaemon/Documents/NIX/CA-tutorial/test
>
> $ ls -ld bin ca-profile
> lrwxrwxrwx 1 anrdaemon None  61 ноя  2 01:15 bin -> /home/anrdaemon/Documents/NIX/CA-tutorial/svn-working/scripts
> -rwx--x--x 1 anrdaemon None 588 дек 24  2017 ca-profile
>
> $ cat bin/../ca-profile
> cat: bin/../ca-profile: No such file or directory
>

Try ls `bin/../`

You'll see a listing of
/home/anrdaemon/Documents/NIX/CA-tutorial/svn-working/.

> $ cat $( realpath -Le "bin/../ca-profile" )
> # @version $Id: ca-profile 82 2014-02-08 05:24:12Z anrdaemon $
> ...
>
> In simpler words, the bin directory is symlinked from elsewhere.
> realpath -Le resolves correctly, but all other filesystem functions fail.
>
> I vaguely recall that there was some discussion on the matter, but search
> returns too many results, can't read them all.
> My question, basically: is this expected way of things?

The answer is yes it is expected and works the same on Linux.

> If so, I'd just workaround it. Sad but doable.

Don't be sad just do it. ;p

--
cyg Simple

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple