1 votes

Lien symbolique brisé lors de la création d'un lien à partir du répertoire source

J'ai créé un lien symbolique pour un fichier nommé zotero.desktop à placer dans le répertoire ~/.local/share/applications comme ci-dessous :

<At source file's directory>$ ln -s zotero.desktop ~/.local/share/applications/

le lien symbolique a été créé, mais il était cassé et ne fonctionnait pas. Aussi, j'ai essayé de double-cliquer sur le fichier Ubuntu Desktop, mais j'ai eu l'alerte de "Boken link".

Puis j'ai essayé la commande ci-dessous, et ça a marché :

<At ~/.local/share/applications/>$ ln -s <source-dir>/zotero.desktop .

Y a-t-il une explication à cela ?

2voto

Stewart Points 1385

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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X