You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行rm -rf A/$b命令后目录A被意外删除的底层原因问询

命令执行后删除目录A的底层逻辑

根因:Shell 变量扩展优先级高于命令执行,$b变量未赋值/为空值

Shell在执行任何命令前,会先完成变量替换、通配符扩展、引号解析等前置操作,再把最终的参数传给目标命令,整个执行流程如下:

  • 你输入的原始命令为 rm -rf A/$b.,如果当前Shell环境中没有给变量b设置过值,$b会被扩展为空字符串。
  • 变量扩展完成后,路径参数A/$b.会被拼接为 A/.(A/ + 空值 + . = A/.)。
  • Linux系统中每个目录默认存在两个特殊硬链接:. 指向目录本身,.. 指向目录的上级目录,因此A/.本质上就是目录A的等价引用。
  • rm -rf 接收到最终参数后,会递归删除A/.指向的所有内容,包括A目录下的全部子文件、子目录,最后删除A目录本身。

补充场景:如果你输入的命令实际是 rm -rf A/$b/(末尾是斜杠而非点),$b为空时扩展结果为 A//,Linux路径中连续的斜杠会被视为单个斜杠,等价于 A/,rm -rf A/ 自然会直接删除整个A目录。

内容的提问来源于stack exchange,提问作者Jagan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:54:03