Mở rộng Tilde được định nghĩa bởi POSIX là:
Một "tiền tố tilde" bao gồm một ký tự <tilde> không được trích dẫn ở đầu từ, theo sau là tất cả các ký tự đứng trước dấu gạch chéo <slash> đầu tiên trong từ hoặc tất cả các ký tự trong từ nếu không có < dấu gạch chéo>. Trong một bài tập, nhiều tiền tố dấu ngã có thể được sử dụng: [...] theo sau <dấu bằng> của bài tập, theo bất kỳ <dấu> nào không được trích dẫn hoặc cả hai. [...] Nếu không có ký tự nào trong tiền tố dấu ngã được trích dẫn, thì các ký tự trong tiền tố dấu ngã sau <tilde> được coi là tên đăng nhập có thể có từ cơ sở dữ liệu người dùng. [...] Nếu tên đăng nhập là null (có nghĩa là tiền tố dấu ngã chỉ chứa dấu ngã), tiền tố dấu ngã được thay thế bằng giá trị của biến HOME. Nếu HOME không được đặt, kết quả không được chỉ định. [...]
Vì vậy, câu trả lời ngắn nhất là "bởi vì nó được định nghĩa theo cách đó": trích dẫn bất kỳ ký tự nào trong tiền tố, bao gồm cả ~
, ngăn chặn sự mở rộng.
Nó cũng định nghĩa việc mở rộng là luôn luôn dẫn đến một từ duy nhất, vì vậy trích dẫn sẽ không cần thiết:
Tên đường dẫn do mở rộng dấu ngã sẽ được xử lý như thể được trích dẫn để ngăn chặn nó bị thay đổi bằng cách tách trường và mở rộng tên đường dẫn.
Trong trường hợp một số đường dẫn yêu cầu trích dẫn, nhưng phần còn lại là tiền tố dấu ngã, bạn có thể kết hợp mở rộng dấu ngã và trích dẫn thông thường một cách đơn giản:
$ cat ~/"file name with spaces"
Trên "tại sao" rộng hơn: vì không có cách sử dụng có thể hiểu được để phân tách từ ~
, đó phải là hành vi mặc định, thay vì yêu cầu trích dẫn. Bởi vì không cần phải trích dẫn nó, việc đưa ra ~
một ý nghĩa đặc biệt trong các trích dẫn sẽ là một sự phức tạp không cần thiết. Và, tất nhiên, lý do lịch sử có nghĩa là nó không thể thay đổi ngay cả khi điều đó là mong muốn.