将目录链接到根目录时,出现以下错误:
$ ln -s ~/inbox/ /
$ ln: //: Is a directory
Bash 通过添加 / 来自动完成目录路径。我尝试过逃跑,但没有成功。
$ ln -s ~/inbox /
虽然有效。为什么是这样?
答案1
在路径名解析,具有尾随/
相当于尾随/.
- 换句话说,~/inbox/
相当于~/inbox/.
在这种情况下。因此该ln
命令尝试创建一个.
在根目录中调用的链接(不出所料,失败了)。
/
当您Space完成目录后按下时, Zsh 会删除尾随(除非配置为不这样做)。我不知道 bash 是否可以做到这一点。
答案2
这就是你跑的吗?
Is a directory
看起来你的操作系统打印了EISDIR
错误,这可能通过两种方式发生:
尝试覆盖指向目录的现有符号链接。
$ cd $(mktemp -d)
$ mkdir dir
$ ln -s dir dir # this creates dir/dir
$ ln -s dir dir # this fails, because dir/dir already exists
ln: failed to create symbolic link `dir/dir': File exists
尝试创建目录的硬链接。
$ cd $(mktemp -d)
$ mkdir dir
$ ln dir dirlink
ln: `dir': hard link not allowed for directory
如果这是您正在运行的内容,那么会type ln
打印什么alias ln
?