I stumbled upon this behavior of zsh when using FreeBSD:
% dd if=/dev/zero bs=1M count=1 of=~/test2
dd: failed to open '~/test2': No such file or directory
This really confused me because the same thing works just fine in bash.
I can touch
files using tilde in zsh, and then ls
them:
% touch ~/test2
% ls ~/test2
/home/christoph/test2
At first, I assumed that zsh doesn't realize that there comes a path after of=
so it didn't expand ~
. But autocompleting file names works just fine. In fact, if use an existing file name, begin its path with ~
, and then hit Tab at some point, the path gets expanded in the command I'm typing in.
Why does zsh pass ~/test2
to dd
, not /home/christoph/test2
?
zsh behaves the same on Linux. In fact, I executed these commands above and copied their outputs on a Linux machine.
$HOME
instead of~
. – Ilario Gelmetti Apr 22 '20 at 16:06