我可以通过pwd
文件中的alias
获取.zshrc
吗?我正在尝试做类似以下的事情:
alias cleanup="rm -Rf `pwd`/{foo,bar,baz}"
这在bash中运行良好; pwd
始终是我cd
'进入的目录,但是在zsh中,它似乎是在首次加载.zshrc
文件时进行评估,并始终作为我的主目录。我已经使用非常简单的alias
设置进行了测试,但它永远不会改变。
如何进行此更改,以便从子目录调用alias
始终评估为该子目录?
编辑:不确定这是否有用,但我在Mac上使用zsh通过oh-my-zsh。
答案 0 :(得分:31)
加载.zshrc
后,将评估alias
命令。该命令由两个单词组成:命令名称(内置alias
)和一个参数,它是展开cleanup="rm -Rf `pwd`/{foo,bar,baz}"
的结果。由于反引号在双引号之间插值,因此该参数扩展为cleanup=rm -Rf /home/unpluggd/{foo,bar,baz}
(这是一个单词shell),其中/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'