Mi sono imbattuto in questo comportamento di zsh quando ho usato FreeBSD:
% dd if=/dev/zero bs=1M count=1 of=~/test2
dd: failed to open '~/test2': No such file or directory
Questo mi ha davvero confuso perché la stessa cosa funziona bene a Bash.
Posso touch
file usando tilde in zsh, e poi ls
loro:
% touch ~/test2
% ls ~/test2
/home/christoph/test2
Inizialmente, supponevo che zsh non si rendesse conto che dopo c'è un percorso, of=
quindi non si è espanso ~
. Ma i nomi dei file completati automaticamente funzionano bene. In effetti, se usi un nome file esistente, inizia il suo percorso con ~
, e poi premi Tab ad un certo punto, il percorso si espande nel comando che sto digitando.
Perché il zsh passa ~/test2
a dd
, non /home/christoph/test2
?
zsh si comporta allo stesso modo su Linux. In effetti, ho eseguito questi comandi sopra e copiato i loro output su una macchina Linux.
$HOME
invece di~
.