为什么遇到 $HOME 时 'rmdir -p --ignore-fail-on-non-empty' 会失败?

为什么遇到 $HOME 时 'rmdir -p --ignore-fail-on-non-empty' 会失败?

请考虑以下命令:

cd /
mkdir -p ~/a/b
touch ~/a/content
# Removes dir 'b' and stops at 'a' because it's non-empty.
# (This is the expected behavior.)
rmdir -p --ignore-fail-on-non-empty ~/a/b

rm ~/a/content
mkdir -p ~/a/b
# Fails with error: "rmdir: failed to remove directory '/home/myhome'".
rmdir -p --ignore-fail-on-non-empty ~/a/b

为什么rmdir到了最后一步就失败了?为什么它会尝试删除非空 $HOME而不是停下来?

答案1

内容如下man rmdir

--忽略非空失败

忽略每一个失败独自因为目录非空

即由于某些原因无法删除目录其他错误,除了它是空的之外,仍然会报告。

由于普通用户通常没有足够的权限进行修改/home(包括删除自己的主目录),因此rmdir在这样调用时只会遇到“权限被拒绝”错误。

您可以通过尝试以下方式轻松确认这一点:

rmdir ~

这将导致:

rmdir: failed to remove '/home/youruser': Permission denied

相关内容