Я создал символическую ссылку для файла с именем zotero.desktop
, который будет помещен в каталог ~/.local/share/applications
, как показано ниже:
<At source file's directory>$ ln -s zotero.desktop ~/.local/share/applications/
символическая ссылка создана, но был сломан и не работал. Также попытался дважды щелкнуть файл Ubuntu Desktop, но у него появилось предупреждение «Boken link».
Затем попробовал приведенную ниже команду, и она сработала:
<At ~/.local/share/applications/>$ ln -s <source-dir>/zotero.desktop .
Есть ли какое-то объяснение этому?
Команда ln -s zotero.desktop ~/.local/share/applications/
создает softlink ~/.local/share/applications/zotero.desktop
который указывает на себя, ~/.local/share/applications/zotero.desktop
:
$ ls -l ~/.local/share/applications/zotero.desktop
lrwxrwxrwx 1 terdon terdon 14 May 29 11:33 /home/terdon/.local/share/applications/zotero.desktop -> zotero.desktop
Это вызвано тем, что формат ln
команда:
ln source target
Так как Вы дали источник как имя файла без пути, который взят, чтобы быть именем файла в целевом каталоге. Я не знаю, где Ваша цель, но предположение, что это находится в каталоге, который Вы запустили ln
команда от, Вы хотите выполнить это:
rm ~/.local/share/applications/zotero.desktop
ln -s "$PWD/zotero.desktop" ~/.local/share/applications/
В целом необходимо помнить, что softlinks относительны. Так, например, я могу сделать это:
$ tree
.
├── file
└── foo
1 directory, 1 file
$ ln -s ../file foo/
terdon@tpad foo $ tree
.
├── file
└── foo
└── file -> ../file
Когда я работал ln -s ../file foo
, это означает, "создают символьную ссылку в нечто каталога, которое указывает на../файл". Но ../file
будет относительно символьной ссылки. Таким образом, это укажет на названный файл file
выше каталога foo
.
Самый простой способ всегда разобраться в нем состоит в том, чтобы переместиться в целевой каталог сначала и затем работать ln
управляйте там, так, чтобы Вы разобрались в относительном пути.