我在使用FreeBSD时偶然发现了zsh的这种行为:
% dd if=/dev/zero bs=1M count=1 of=~/test2
dd: failed to open '~/test2': No such file or directory
这真的让我感到困惑,因为同一件事在bash中效果很好。
我可以touch
在zsh中使用波浪号来归档文件,然后使用ls
它们:
% touch ~/test2
% ls ~/test2
/home/christoph/test2
起初,我假设zsh并未意识到后面会有路径,of=
所以它没有扩展~
。但是自动完成文件名就可以了。实际上,如果使用现有文件名,则以开头~
,然后按Tab键,该路径会在我键入的命令中扩展。
为什么zsh传递~/test2
给dd
而不是/home/christoph/test2
?
zsh在Linux上的行为相同。实际上,我在上面执行了这些命令并将其输出复制到Linux机器上。
$HOME
代替~
。