La commande ln -s zotero.desktop ~/.local/share/applications/
crée le lien logiciel ~/.local/share/applications/zotero.desktop
qui pointe vers lui-même, ~/.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
Cela s'explique par le fait que le format de la ln
la commande est :
ln source target
Comme vous avez indiqué le nom du fichier source, sans chemin d'accès, il est considéré comme un nom de fichier dans le répertoire cible. Je ne sais pas où se trouve votre cible, mais en supposant qu'elle se trouve dans le répertoire où vous avez exécuté la commande ln
de la commande, vous voulez exécuter ceci :
rm ~/.local/share/applications/zotero.desktop
ln -s "$PWD/zotero.desktop" ~/.local/share/applications/
En général, vous devez vous rappeler que les liens mous sont relatifs. Donc, par exemple, je peux faire ceci :
$ tree
.
file
foo
1 directory, 1 file
$ ln -s ../file foo/
terdon@tpad foo $ tree
.
file
foo
file -> ../file
Quand j'ai couru ln -s ../file foo
ce qui signifie "créer un lien symbolique dans le répertoire foo qui pointe vers ../file". Mais le ../file
sera par rapport au lien symbolique. Ainsi, il pointera vers un fichier appelé file
au-dessus de le répertoire foo
.
Le moyen le plus simple de toujours bien faire les choses est de se déplacer d'abord dans le répertoire cible, puis d'exécuter la commande ln
afin que le chemin relatif soit correct.