Tilde Expansion

如果一个词以没有引用的波浪线字符 (**~**') 开始,所有 在第一个没有引用的斜线 (/') 之前的字符 (或者是这个词的所有字符, 如果没有没引用的斜线的话) 都被认为是 tilde-prefix(波浪线前缀)。 如果 tilde-prefix 中没有被引用的字符,那么波浪线之后的字符串 被认为是 login name(登录名)。如果登录名是空字符串,波浪线将 被替换为 shell 参数 HOME 的值。如果没有定义 HOME, 将替换为执行此 shell 的用户的个人目录。否则,tilde-prefix 被替换为 与指定登录名相联系的个人目录。

如果 tilde-prefix 是 ~+',将使用 shell 变量 **PWD** 的值来替换。如果 tilde-prefix 是~-',并且设置了 shell 变量 OLDPWD, 将使用这个变量值来替换。如果在 tilde-prefix 中,波浪线之后的字符串 由一个数字 N 组成,前缀可选的 +' 或者-',那么 tilde-prefix 将被替换为目录栈中相应的元素,就是将 tilde-prefix 作为参数执行内建命令 dirs 显示的结果。如果 tilde-prefix 中波浪线之后的字符是一个数字,没有前缀, 那么就假定有一个 `+'。

如果登录名不合法,或者波浪线扩展失败,这个词将不会变化。

在变量赋值中,对于 := 之后的字符串会立即检查未引用的 tilde-prefix。 这种情况下,仍然会进行波浪线扩展。因此,可以使用带波浪线的文件名来为 PATH, MAILPATH, 和 CDPATH 赋值,shell 将赋予扩展之后的值。