틸드 확장 은 POSIX에 의해 다음과 같이 정의됩니다.
"틸드 접두어"는 단어의 시작 부분에 인용되지 않은 <tilde> 문자와 단어에서 첫 번째 인용되지 않은 <slash> 앞에 오는 모든 문자 또는 <가없는 경우 단어의 모든 문자로 구성됩니다. 슬래시>. 할당에서 여러 물결표 접두어를 사용할 수 있습니다. [...] 할당의 <equals-sign> 다음에, 인용되지 않은 <colon> 다음에, 또는 둘 다 사용하십시오. [...] 물결표 접두어의 문자가 인용되지 않으면 <tilde> 다음에 나오는 물결표 접두어의 문자는 사용자 데이터베이스에서 가능한 로그인 이름으로 처리됩니다. [...] 로그인 이름이 null 인 경우 (즉, 물결표 접두사 만 물결표를 포함하는 경우) 물결표 접두사는 변수 HOME 값으로 대체됩니다. HOME을 설정하지 않으면 결과가 지정되지 않습니다. [...]
가장 짧은 대답은 "그런 식으로 정의 되었기 때문"입니다. 접두사에있는 문자를 인용하면 ~
확장이 억제됩니다.
또한 확장은 항상 단일 단어를 생성하는 것으로 정의하므로 인용이 필요하지 않습니다.
물결표 확장으로 인한 경로 이름은 필드 분할 및 경로 이름 확장에 의해 변경되지 않도록 인용 된 것처럼 처리됩니다.
경로의 일부에 따옴표가 필요하지만 나머지는 틸드 접두어 인 경우 틸드 확장과 일반 따옴표를 간단하게 결합 할 수 있습니다.
$ cat ~/"file name with spaces"
더 넓은 "왜"에 대해 : 단어 분리를위한 사용이 없기 때문에 ~
, 인용을 요구하는 것이 아니라 기본 행동이어야합니다. 인용 할 필요가 없기 때문에, 인용 부호 ~
안에 특별한 의미를 부여 하는 것은 불필요한 합병증이 될 것입니다. 물론 역사적 이유는 그것이 바람직하더라도 지금은 바꿀 수 없다는 것을 의미합니다.