Die Tilde-Erweiterung wird von POSIX definiert als:
Ein "Tilde-Präfix" besteht aus einem nicht in Anführungszeichen stehenden <Tilde> -Zeichen am Wortanfang, gefolgt von allen Zeichen vor dem ersten nicht in Anführungszeichen stehenden <Schrägstrich> im Wort oder allen Zeichen im Wort, wenn kein <vorhanden ist Schrägstrich>. In einer Zuweisung können mehrere Tilde-Präfixe verwendet werden: [...] nach dem Gleichheitszeichen der Zuweisung, nach einem nicht zitierten Doppelpunkt oder beidem. [...] Wenn keines der Zeichen im Tilde-Präfix in Anführungszeichen gesetzt wird, werden die Zeichen im Tilde-Präfix nach der <Tilde> als möglicher Anmeldename aus der Benutzerdatenbank behandelt. [...] Wenn der Anmeldename null ist (dh das Tilde-Präfix enthält nur die Tilde), wird das Tilde-Präfix durch den Wert der Variablen HOME ersetzt. Wenn HOME nicht festgelegt ist, werden die Ergebnisse nicht angegeben. [...]
Die kürzeste Antwort lautet also "weil es so definiert ist": Das Zitieren eines der Zeichen im Präfix, einschließlich des ~
, unterdrückt die Erweiterung.
Außerdem wird die Erweiterung so definiert, dass sie immer ein einzelnes Wort ergibt, sodass keine Anführungszeichen erforderlich sind:
Der aus der Tilde-Erweiterung resultierende Pfadname wird so behandelt, als ob er in Anführungszeichen gesetzt wäre, um zu verhindern, dass er durch Feldaufteilung und Pfadnamen-Erweiterung geändert wird.
Wenn für einen Teil des Pfads Anführungszeichen erforderlich sind, der Rest jedoch ein Tilde-Präfix ist, können Sie die Tilde-Erweiterung und das normale Anführen von Anführungszeichen direkt kombinieren:
$ cat ~/"file name with spaces"
Was das "Warum" angeht: Da es keine vorstellbare Verwendung für das Teilen von Wörtern ~
gibt, sollte dies das Standardverhalten sein, anstatt dass es in Anführungszeichen gesetzt wird. Da es nicht erforderlich ist, es zu zitieren, ~
wäre es eine unnötige Komplikation, in Anführungszeichen eine besondere Bedeutung zu setzen. Und natürlich kann es aus historischen Gründen nicht geändert werden, selbst wenn dies wünschenswert wäre.