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ể touchtập tin bằng cách sử dụng dấu ngã trong zsh, và sau đó lschú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.
$HOMEthay vì~.