12

有没有办法可以pwdalias我的.zshrc文件中获取?我正在尝试执行以下操作:

alias cleanup="rm -Rf `pwd`/{foo,bar,baz}"

这在 bash 中运行良好;pwd始终是我cd进入的目录,但是在 zsh 中,它似乎是在.zshrc文件首次加载时进行评估并始终作为我的主目录。我已经使用非常简单的alias设置进行了测试,但它永远不会改变。

我怎样才能进行此更改,以便alias从子目录调用始终评估为该子目录?

编辑:不确定这是否有帮助,但我在 mac 上通过 oh-my-zsh 使用 zsh。

4

1 回答 1

36

.zshrc加载您的alias命令时,将评估该命令。该命令由两个单词组成:一个命令名称(内置alias)和一个参数,它是扩展的结果cleanup="rm -Rf `pwd`/{foo,bar,baz}"。由于在双引号之间插入了反引号,因此该参数扩展为cleanup=rm -Rf /home/unpluggd/{foo,bar,baz}(即单个 shell 字) where/home/unpluggd是当时的当前目录。

如果要在定义命令时避免插值,请改用单引号。这几乎总是您想要的别名。

alias cleanup='rm -Rf `pwd`/{foo,bar,baz}'

然而,这是不必要的复杂。你不需要`pwd/`在文件名前面!写吧

alias cleanup='rm -Rf -- {foo,bar,baz}'

--如果foo可能以 , 开头,则需要-, 以避免将其解析为 的选项rm),这可以简化,因为不再需要大括号:

alias cleanup='rm -Rf -- foo bar baz'
于 2011-04-06T21:55:21.903 回答