有没有办法我可以得到我的.zshrc文件中的别名的pwd?我试图做如下的事情:
alias cleanup="rm -Rf `pwd`/{foo,bar,baz}"
这在bash中工作正常pwd始终是我已经cd’d进入的目录,但是在zsh看来,当.zshrc文件首次加载并且始终保持为我的主目录时,它被评估.我已经使用一个非常简单的别名设置进行测试,但它永远不会改变.
如何进行此更改,以便从子目录调用别名总是评估为该子目录?
编辑:不知道这是否会有所帮助,但是我在mac上通过oh-my-zsh使用zsh.
解决方法
加载.zshrc后,将对alias命令进行评估.该命令由两个单词组成:命令名(内置别名)和一个参数,这是扩展cleanup =“rm -Rf`pwd` / {foo,baz}”的结果.由于反引号在双引号之间进行插值,所以此参数将扩展为cleanup = rm -Rf / home / unpluggd / {foo,baz}(这是一个shell字),其中/ home / unpluggd是当前的当前目录.
如果要在定义命令时避免内插,请改用单引号.这几乎总是你想要的别名.
alias cleanup='rm -Rf `pwd`/{foo,baz}'
然而这是不必要的复杂.你不需要`pwd /`在文件名前面!只写
alias cleanup='rm -Rf -- {foo,baz}'
(如果foo可能以 – 开头,那么就需要这样做,以避免被解析为rm的一个选项),这可以被简化,因为不再需要大括号:
alias cleanup='rm -Rf -- foo bar baz'