自定义 ZSH 波浪号扩展

customizing ZSH tilde expansion

上下文

这涉及 ZSH 波浪号扩展(如 bash tilde expansion)。

示例:~http 扩展为 /srv/http,这是(大致)在 /etc/passwd 中设置的用户 http 的家。

我想做什么

我想配置 ZSH 以获得我希望的任何文件名波浪线扩展。

我的 .zshrc 中的 设置 alias ~foo /foo/bar 类似。

我不想要的

可以创建(作为 root)用户 foo 并将它的主页设置为 /foo/bar 但是因为 any 用户应该能够做到这一点,这样的解决方案是不可接受的。

另外,这与~$HOME的完成无关。

其他

此 post 讨论 bash 波浪线扩展的性质:Meaning of tilde in Linux bash (not home directory).

感谢您的回答! ;-)

您可以使用其中一种(或两种)方式:

现在,我们也可以使用 cd ~foo 将当前目录更改为 /foo/bar

它在 zsh 中被称为 “Static named directories”


注意:当 CDABLE_VARS shell option 处于活动状态时,如果目录(本例中为 /foo/bar)存在,我们甚至可以在上面的示例中执行 cd foo 而不是 cd ~foo .