On 08/24/2015 02:19 PM, Cameron Simpson wrote:
On 24Aug2015 13:55, Paolo Galtieri <pgalti...@gmail.com> wrote:
I've tried this on 2 different systems, and on both systems ln -s fails in the same way.

Here's the steps

mkdir Test
cd Test
afile
cd ..
ln -s Test/afile Test/afile2
ls -l Test

This is the output:
/bin/ls: cannot access Test/afile2: No such file or directory
total 0
-rw-rw-r--. 1 pgaltieri pgaltieri 0 Aug 24 13:46 afile
l?????????? ? ?         ?         ?            ? afile2
[...]

Firstly, run "/bin/ls", not "ls". Many system ship with an alias called "ls" with presupplied various options, which is misleading. IMO this is a terrible idea - the alias should at least use another name. (I have ones called "l" and "L" for these conveniences, myself.)

To your problem:

Symlinks are strings resolved with respect to the directory in which the symlink exists.

So the example above "Test/afile" => "Test/afile2" makes a symlink _in_ the directory "Test" named "afile2" pointing at "Test/afile". Therefore it tries to access the path "Test/Test/afile", which fails as one might expect.

When making a symbolic link it needs to either be (a) an absolute path or (b) relative WRT to the directory hodling the link. For the latter, the reliable way is to cd to the directory and make in from inside. That way command line filename completion prodcues working results.

Cheers,
Cameron Simpson <c...@zip.com.au>

Unix is user-friendly. It's just picky about who its friends are.
Cameron,
  thank you for your reply.  As it turns out the ln command

ln -s Test/afile Test/afile1

does create the link.  The problem as you noted is the ls command. If I do

/bin/ls -l Test

I get

total 0
-rw-rw-r--. 1 pgaltieri pgaltieri  0 Aug 25 08:20 afile
lrwxrwxrwx. 1 pgaltieri pgaltieri 10 Aug 25 08:20 afile2 -> Test/afile

But doing

ls -l Test

I get

/bin/ls: cannot access Test/afile2: No such file or directory
total 0
-rw-rw-r--. 1 pgaltieri pgaltieri 0 Aug 25 08:20 afile
l?????????? ? ?         ?         ?            ? afile2

I'll probably file a bug against freeradius indicating the documentation is wrong :-)

The correct way to do the link is

mkdir Test2
cd Test2
ln -s ../Test/file file
cd ..

/bin/ls -l Test2
total 0
lrwxrwxrwx. 1 pgaltieri pgaltieri 10 Aug 25 08:29 afile -> Test/afile
lrwxrwxrwx. 1 pgaltieri pgaltieri 13 Aug 25 08:29 afile2 -> ../Test/afile

ls -l Test2
total 0
-rw-rw-r--. 1 pgaltieri pgaltieri 0 Aug 25 08:20 afile

which is what I expect to see.  The ls command is an alias of /bin/ls -LCFb.

Again thank you for your help.

Paolo





--
users mailing list
users@lists.fedoraproject.org
To unsubscribe or change subscription options:
https://admin.fedoraproject.org/mailman/listinfo/users
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct
Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines
Have a question? Ask away: http://ask.fedoraproject.org

Reply via email to