Ich bin bei der Verwendung von FreeBSD auf dieses Verhalten von zsh gestoßen:
% dd if=/dev/zero bs=1M count=1 of=~/test2
dd: failed to open '~/test2': No such file or directory
Das hat mich wirklich verwirrt, weil das gleiche in Bash gut funktioniert.
Ich kann touchDateien mit Tilde in zsh und dann lssie:
% touch ~/test2
% ls ~/test2
/home/christoph/test2
Zuerst nahm ich an, dass zsh nicht merkt, dass es einen Pfad danach gibt, of=also hat er sich nicht erweitert ~. Das automatische Vervollständigen von Dateinamen funktioniert jedoch einwandfrei. Wenn Sie einen vorhandenen Dateinamen verwenden, den Pfad mit beginnen ~und dann irgendwann die Tabulatortaste drücken, wird der Pfad in dem Befehl, den ich eingebe, erweitert.
Warum passieren wird zsh ~/test2zu dd, nicht /home/christoph/test2?
zsh verhält sich unter Linux genauso. Tatsächlich habe ich diese Befehle oben ausgeführt und ihre Ausgaben auf einen Linux-Computer kopiert.
$HOMEanstelle von verwenden~.