Tôi tình cờ thấy hành vi này của zsh khi sử dụng FreeBSD:
% dd if=/dev/zero bs=1M count=1 of=~/test2
dd: failed to open '~/test2': No such file or directory
Điều này thực sự làm tôi bối rối vì điều tương tự chỉ hoạt động tốt trong bash.
Tôi có thể touch
tập tin bằng cách sử dụng dấu ngã trong zsh, và sau đó ls
chúng:
% touch ~/test2
% ls ~/test2
/home/christoph/test2
Lúc đầu, tôi cho rằng zsh không nhận ra rằng có một con đường sau of=
nên nó không mở rộng ~
. Nhưng tên tập tin tự động hoàn thành chỉ hoạt động tốt. Trong thực tế, nếu sử dụng tên tệp hiện có, bắt đầu đường dẫn của nó ~
và sau đó nhấn Tab tại một số điểm, đường dẫn sẽ được mở rộng trong lệnh tôi đang nhập.
Tại sao zsh vượt qua ~/test2
để dd
, không /home/christoph/test2
?
zsh hoạt động tương tự trên Linux. Trong thực tế, tôi đã thực hiện các lệnh trên và sao chép kết quả đầu ra của chúng trên máy Linux.
$HOME
thay vì~
.