Ekspansi Tilde didefinisikan oleh POSIX sebagai:
"Tilde-prefix" terdiri dari karakter <tilde> yang tidak dikutip di awal kata, diikuti oleh semua karakter sebelum <slash> tanpa tanda kutip pertama dalam kata, atau semua karakter dalam kata jika tidak ada < slash>. Dalam penugasan, beberapa awalan-tilde dapat digunakan: [...] mengikuti <equals-sign> dari penugasan, mengikuti sembarang kutipan <colon>, atau keduanya. [...] Jika tidak ada karakter dalam awalan tilde yang dikutip, karakter dalam awalan tilde mengikuti <tilde> diperlakukan sebagai nama login yang mungkin dari basis data pengguna. [...] Jika nama loginnya nol (yaitu, awalan tilde hanya berisi tilde), awalan tilde digantikan oleh nilai variabel HOME. Jika HOME tidak disetel, hasilnya tidak ditentukan. [...]
Jadi jawaban terpendek adalah "karena itu didefinisikan seperti itu": mengutip salah satu karakter dalam awalan, termasuk ~
, menekan ekspansi.
Itu juga mendefinisikan ekspansi seperti biasa menghasilkan satu kata, jadi mengutip tidak perlu:
Pathname yang dihasilkan dari ekspansi tilde harus diperlakukan seolah dikutip untuk mencegahnya diubah oleh field splitting dan ekspansi pathname.
Jika beberapa lintasan membutuhkan kuotasi, tetapi sisanya adalah awalan tilde, Anda dapat menggabungkan ekspansi tilde dan mengutip biasa dengan mudah:
$ cat ~/"file name with spaces"
Pada "mengapa" yang lebih luas: karena tidak ada kegunaan yang mungkin untuk pemisahan kata ~
, itu harus menjadi perilaku default, daripada mengharuskannya untuk dikutip. Karena tidak perlu mengutipnya, memberikan ~
arti khusus di dalam kutipan akan menjadi komplikasi yang tidak perlu. Dan, tentu saja, alasan historis berarti itu tidak dapat diubah sekarang bahkan jika itu diinginkan.