运行时(在 Linux 上不同的 ubuntu 变体上):
>ln -s dir_1 symlink_dir
>ln -s dir_2 symlink_dir
它失败了,但没有提示失败。但是如果你对文件执行相同的操作,或者在选项中添加 v,它会提示你失败:
>ln -s file_1 symlinkg_file
>ln -s file_2 symlinkg_file
或者
>ln -sv dir_1 symlink_dir
>ln -sv dir_2 symlink_dir
失败并显示错误消息:
ln: failed to create symbolic link
对我来说,这似乎是一个非常奇怪的行为?这有什么原因吗?
答案1
它实际上并没有失败。它创建了你的链接里面给定的目录:
% mkdir dir_1 dir_2
% ln -s dir_1 symlink_dir
% ln -s dir_2 symlink_dir
% ls -l
total 0
drwxr-xr-x 2 user group 60 Oct 16 12:47 dir_1
drwxr-xr-x 2 user group 40 Oct 16 12:47 dir_2
lrwxrwxrwx 1 user group 5 Oct 16 12:47 symlink_dir -> dir_1
% ls -l dir_1
total 0
lrwxrwxrwx 1 user group 5 Oct 16 12:47 dir_2 -> dir_2
手册页中描述了此行为:
ln [OPTION]... TARGET... DIRECTORY (3rd form)
...
In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
但是,由于设置不正确,此链接无法链接回 dir_2。不过这也是预期行为,并不意味着会失败。从联机帮助页中:
符号链接可以保存任意文本;如果稍后解析,则相对链接将根据其父目录进行解释。
顺便说一句,即使使用 ,它对我来说也是一样的工作方式-sv
。也许你正在使用 的不同实现ln
。你确定你没有使用 吗-T
?也许那是在你的~/.bashrc
/ ~/.zshrc
/etc 中设置的。试试which ln
。