Основываясь на отзывах @Kusalananda и @stéphane -chazelas, я пытаюсь ответить на вопрос сам.
Оболочка является интерпретатором командной строки. Входные токены строго не печатаются. Лечение зависит от контекста. Есть два разумных ответа:
Ответ 1
Тильда вообще не имеет «вида языковой конструкции», потому что при интерпретации ввода оболочки не происходит ввода. В зависимости от контекста ввод обрабатывается динамически.
Ответ 2
Тип тильды наиболее близок к виртуальному типу «путь». В типичном контексте он расширяется до домашнего каталога, что дает характер, похожий на переменную, хотя это не так.
Обоснование ответа 1
Даже токены управления потоком не печатаются на Bash:
echo while
Это не ошибка. Он просто печатает «пока» в этом контексте.
В зависимости от контекста тильда трактуется по-разному. Обычно он расширяется до домашнего каталога пользователя :
.echo ~
В других контекстах не раскрывается:
echo "~"
echo ~~
Обоснование ответа 2
Определение POSIX говорит о тильде без кавычек как о «слове». В обычном случае он расширяется до домашнего каталога оболочкой до того, как будет использоваться самой оболочкой в качестве пути или до того, как он будет передан в качестве аргумента другим программам.
Используется как путь к исполняемому файлу:
~/bin/myprogram
Используется как путь в аргументе:
ls ~
Даже расширение до домашнего каталога перед передачей в качестве аргумента не обязательно должно быть путем:
echo ~
Опять же, в типичном случае использования в оболочке слова без кавычек используются как пути, а слова в кавычках — как строковые аргументы. Каждый вызов исполняемого файла является относительным путем к $PATH. Нажатие расширяет слова на основе путей в файловой системе.
**Резюме**
Оболочку можно использовать не -нетипичным -способом. Например, вы можете использовать строки в кавычках как пути к исполняемым файлам:
"echo" echo
Эхо этого отпечатка. Типичное использование кавычек и некавычек инвертировано.
Обоснование ответа 2 основано на соглашениях, а не на реальной печати. Архитектура оболочки является динамической.