是什么原因导致ln://:是一个目录?

是什么原因导致ln://:是一个目录?

将目录链接到根目录时,出现以下错误:

$ 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

相关内容