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

为何Bash波浪号扩展在引号包含斜杠路径时失效?规则解析

Shell波浪号扩展的生效规则

这是由Bash及多数POSIX兼容shell的波浪号扩展机制决定的,核心规则如下:

  • 波浪号~仅在作为单词的起始字符,且自身未被引号(单/双引号)包裹时,才会触发扩展,替换为当前用户的家目录路径;若~后紧跟用户名(如~user),则扩展为该用户的家目录。
  • 当~被引号直接包裹时,会被当作普通字符处理,不会触发扩展逻辑。

结合你的示例分析:

  1. 执行echo ~/"foo"时:
    ~位于单词开头且未被引号包裹(引号仅覆盖foo部分),满足扩展条件,因此~被替换为/home/<username>,最终输出/home/<username>/foo。
  2. 执行echo ~"/foo"时:
    ~与后续的/foo一同被双引号包裹,不再符合“未被引号包裹的单词起始字符”要求,因此不会触发扩展,直接输出字面量~/foo。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:22:41