9

While I was trying to compile a C shared object library, I accidentally created two symbolic links which point to each other. Is there a way to get rid of them without nuking the whole directory? I read that the only way to break a symbolic link is to delete the file it points to, but I'm sure there must be another way. Thanks for the help.

2
  • 4
    Then delete the file it po... oh god. How did you manage this? :P
    – Phoshi
    Feb 2, 2010 at 15:32
  • 2
    It is easy to do, and even easier to fix. Simlinks point at a filename, and the target filename does not even have to exist. And rm removes the simlink, not the file it points to. Feb 2, 2010 at 21:08

3 Answers 3

18

It's not a problem to delete symbolic links. I'm not sure why you think that you need to delete the file the link points to.

Just delete them. Try this:

ln -s thing1 thing2   # thing1 does not exist
ln -s thing2 thing1   # circular reference
rm thing1 thing2      # no problem
5

Nevermind, I can delete both links simultaneously with rm. Why did someone say I had to delete the target file...

2
  • 3
    unlink is even nicer than rm to remove links safely.
    – raphink
    Feb 2, 2010 at 16:21
  • 1
    You could have even just deleted one of the simlinks and left the other - if you had any reason to. Feb 2, 2010 at 21:07
3

When you delete a symbolic link in Linux, the link is deleted and not the target file.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .