我为名为的文件创建了一个名为的符号链接,zotero.desktop
并将其放置在目录中~/.local/share/applications
,如下所示:
<At source file's directory>$ ln -s zotero.desktop ~/.local/share/applications/
符号链接已创建,但已损坏,无法使用。此外,尝试双击文件 Ubuntu Desktop,但出现“链接失效”警报。
然后尝试了下面的命令,并且成功了:
<At ~/.local/share/applications/>$ ln -s <source-dir>/zotero.desktop .
对此有什么解释吗?
答案1
该命令创建指向其自身的ln -s zotero.desktop ~/.local/share/applications/
软链接:~/.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/
一般来说,你需要记住软链接是相对的。例如,我可以这样做:
$ tree
.
├── file
└── foo
1 directory, 1 file
$ ln -s ../file foo/
terdon@tpad foo $ tree
.
├── file
└── foo
└── file -> ../file
当我运行 时ln -s ../file foo
,这意味着“在 foo 目录中创建一个指向 ../file 的符号链接”。但是 将会../file
与符号链接相关。因此它将指向一个名为file
多于目錄foo
。
始终确保正确的最简单方法是先进入目标目录,然后ln
在那里运行命令,这样您就可以正确获得相对路径。